[搜索]CodeForces505B

题意:

找两点之间相同颜色连成的道路的条数。

分析:

BFS+模拟

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <utility>
#include <stack>
#include <queue>
#include <algorithm>
#define read freopen("q.in","r",stdin)
#define write freopen("output.txt","w",stdout)
#define LL long long
const int inf = 0x7fffffff;
const int maxn = 5005;
const int mod = 1000000007;
using namespace std;
struct Node
{
    int to,c,next;
}node[maxn];
int head[maxn],vis[maxn];
int cnt,res,n,m;
void add(int u,int v,int c)
{
    node[cnt].to=v;
    node[cnt].c=c;
    node[cnt].next=head[u];
    head[u]=cnt++;

    node[cnt].to=u;
    node[cnt].c=c;
    node[cnt].next=head[v];
    head[v]=cnt++;
}

void bfs(int u,int v)
{
    int i,j;
    memset(vis,0,sizeof(vis));
    queue<int> q;
    map<int,int> mp;
    for(i=head[u];i!=-1;i=node[i].next)
    {
        q.push(i);
        vis[i]=1;
        vis[i^1]=1;
    //  cout<<"first push:"<<i<<endl;
    }
    while(!q.empty())
    {
        int t=q.front();q.pop();
        if(node[t].to==v && !mp[node[t].c])
        {
        //  cout<<"res edge:  "<<t<<"  res color: "<<node[t].c<<endl;
            res++;
            mp[node[t].c]=1;
            continue;
        }
        for(i=head[node[t].to];i!=-1;i=node[i].next)
        {
            if(node[i].c==node[t].c && !vis[i])
            {
        //      cout<<"push :"<<i<<endl;
                q.push(i);
                vis[i]=1;
                vis[i^1]=1;
            }
        }

    }

}
int main()
{
//  read;
    int i,j;
    while(~scanf("%d%d",&n,&m))
    {
        int a,b,c,q;
        cnt=0;
        memset(head,-1,sizeof(head));
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            add(a,b,c);
        }
    //  for(i=0;i<cnt;i++)cout<<i<<": "<<head[i]<<endl;
        scanf("%d",&q);
        while(q--)
        {
            res=0;
            scanf("%d%d",&a,&b);
            bfs(a,b);
            cout<<res<<endl;
        }
    //  cout<<"-----------------------------"<<endl;
    }
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 14:00:50

[搜索]CodeForces505B的相关文章

Android零基础入门第62节:搜索框组件SearchView

原文:Android零基础入门第62节:搜索框组件SearchView 一.SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索. SearchView默认是展示一个search的icon,点击icon展开搜索框,也可以自己设定图标.用SearchView时可指定如下表所示的常见XML属性及相关方法. 如果为SearchView增加一个配套的ListView,则可以为Se

Android----- 改变图标原有颜色 和 搜索框

本博客主要讲以下两点知识点 图标改变颜色:Drawable的变色,让Android也能有iOS那么方便的图片色调转换,就像同一个图标,但是有多个地方使用,并且颜色不一样,就可以用这个方法了. 搜索框: 一般是EditText实现,本文 实现 TextView图片和文字居中,键盘搜索. 来看看效果图: 图标改变颜色:第一个界面的左边(二维码)和右边(更多)两个实现,我放进去的图片是黑色的,显示出来是白色的. 搜索框:第一个界面的图片和文字居中,还可以设置间距,第二个见面搜索设置键盘搜索按钮,点击搜

移动端 input 获取焦点后弹出带enter(类似于搜索,确定,前往)键盘,以及隐藏系统键盘

一:调出系统带回车键的键盘 在项目中经常有输入框,当输入完成后点击确定执行相应的动作.但是有些设计没有确定或者搜索按钮,这就需要调用系统键盘,点击系统键盘的确定后执行相应动作. 但是单纯的input是无法实现的,要想调出带回车的键盘必须把input放在form表单里面才可以,并且得加上action(一定要加),下面是个简单的例子. <form action class="search" onsubmit="return false;"> <i cl

HDU 1513 Palindrome:LCS(最长公共子序列)or 记忆化搜索

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加字符的个数. 题解1(LCS): 很神奇的做法. 先求s和s的反串的LCS,也就是原串中已经满足回文性质的字符个数. 然后要变成回文串的话,只需要为剩下的每个落单的字符,相应地插入一个和它相同的字符即可. 所以答案是:s.size()-LCS(s,rev(s)) 另外,求LCS时只会用到lcs[i-

Linux下的搜索命令grep(转)

一.简介 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 通常grep会结合管道|来使用,比如把上一个命令得到的结果通过管道|传递到grep进行筛选 二.选项 -a 不要忽略二进制数据. -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容. -b 在显示符合范本样式的那一行之外,并

poj 1088 滑雪 DP(dfs的记忆化搜索)

题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 求最大的下滑路径 分析:因为只能从高峰滑到低峰,无后效性,所以每个点都可以找到自己的最长下滑距离(只与自己高度有关).记忆每个点的最长下滑距离,当有另一个点的下滑路径遇到这个点的时候,直接加上这个点的最长下滑距离. dp递推式是,dp[x][y] = max(dp[x][y],dp[x+1][y]+

hash算法搜索获得api函数地址的实现

我们一般要获得一个函数的地址,通常采用的是明文,例如定义一个api函数字符串"MessageBoxA",然后在GetProcAddress函数中一个字节一个字节进行比较.这样弊端很多,例如如果我们定义一个杀毒软件比较敏感的api函数字符串,那么可能就会增加杀毒软件对我们的程序的判定值,而且定义这些字符串还有一个弊端是占用的字节数较大.我们想想如何我们的api函数字符串通过算法将它定义成一个4字节的值,然后在GetProcAddress中把AddressOfNames表中的每个地址指向的

模糊查询(类似百度搜索框)

很常见的搜索框,很常用,总结一下,怕自己忘了,使用的是原生的js. 这是原生写的,代码很简单,重要是思路.主要就是用了一个indexOf(),很简单.越简单的东西越难想到,很多人都会想到用正则去做,这样就舍近求远了. html部分: <div id="box"> <input type="text" id="txt" value = ""> <input type="button&quo

Elasticsearch查询期间的即时搜索(Query-time Search-as-you-type)

现在让我们来看看前缀匹配能够如何帮助全文搜索.用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type).这不仅让用户能够在更短的时间内看到搜索结果,也能够引导他们得到真实存在于我们的索引中的结果. 比如,如果用户输入了johnnie walker bl,我们会在用户输入完成前显示Johnnie Walker Black Label和Johnnie Walker Blue Label相关的结果. 和往常一样,有多