codevs 1506 传话
http://codevs.cn/problem/1506/
一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人。
如果a认识b,b不一定认识a。
所有人从1到n编号,给出所有“认识”关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n。
第一行是n和m,表示人数和认识关系数。
接下来的m行,每行两个数a和b,表示a认识b。1<=a, b<=n。认识关系可能会重复给出,但一行的两个数不会相同。
一共n行,每行一个字符T或F。第i行如果是T,表示i发出一条新消息会传回给i;如果是F,表示i发出一条新消息不会传回给i。
4 6
1 2
2 3
4 1
3 1
1 3
2 3
T
T
T
F
n<=1000
1<=a, b<=n
分析:
广搜,因为如果搜索到某层K,如果不是由i层转回到i层的一条回路,而是一条死路,那么以后必然也不用搜索这层了。
AC代码:
- #include <stdio.h>
- #include <algorithm>
- #include <iostream>
- #include <string.h>
- #include <string>
- #include <math.h>
- #include <stdlib.h>
- #include <queue>
- #include <stack>
- #include <set>
- #include <map>
- #include <list>
- #include <iomanip>
- #include <vector>
- #pragma comment(linker, "/STACK:1024000000,1024000000")
- #pragma warning(disable:4786)
- using namespace std;
- const int INF = 0x3f3f3f3f;
- const int MAX = 1e3 + ;
- const double eps = 1e-;
- const double PI = acos(-1.0);
- bool f[MAX][MAX];
- bool mark[MAX];
- int n,m,a,b,flag,i;
- void bfs(int start)
- {
- queue<int >q;
- int p;
- q.push(start);
- while(!q.empty())
- {
- int temp=q.front(); q.pop();
- for(p=;p<=n;p++)
- {
- if(f[temp][p]&&!mark[p])
- {
- mark[p]=;
- q.push(p);
- }
- if(mark[i])
- {
- flag=;
- return ;
- }
- }
- }
- }
- int main()
- {
- cin>>n>>m;
- memset(f,,sizeof(f));
- for(i=;i<m;i++) scanf("%d%d",&a,&b), f[a][b]=;
- for(i=;i<=n;i++)
- {
- memset(mark,,sizeof(mark)); flag=;
- bfs(i);
- if(flag)
- printf("T\n");
- else
- printf("F\n");
- }
- return ;
- }
看了题解,发现有人用Floyd ,主要是数据量小,orz
AC代码:
- #include <cstdio>
- #include <iostream>
- #include <cstring>
- int f[][];
- int n,m,x,y;
- using namespace std;
- int main()
- {
- scanf("%d%d",&n,&m);
- memset(f , , sizeof(f));
- for(int i = ;i <= m;++ i){
- scanf("%d%d",&x,&y);
- f[x][y] = ;
- }
- for(int k = ;k <= n;++ k)
- for(int i = ;i <= n;++ i)
- for(int j = ;j <= n;++ j)
- if(f[i][k] == && f[k][j] == )
- f[i][j] = ;
- for(int i = ;i <= n;++ i)
- if(f[i][i] == )
- cout<<"T"<<endl;
- else
- cout<<"F"<<endl;
- return ;
- }
codevs 1506 传话的更多相关文章
- Codevs 1506 传话(floyd大法好)。
1506 传话 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 一个朋友网络,如果a认识b,那么如果a第 ...
- code vs 1506 传话
codevs 1506 传话(时间限制: 1 s 空间限制: 128000 KB) 题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b, ...
- AC日记——传话 codevs 1506 (tarjan求环)
1506 传话 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 一个朋友网络,如果a认识b,那么如果a第 ...
- 1506 传话 (暴力DFS或者Tarjan模板题)
题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人. 如果a认识b,b不一定认识a. 所有人从1到n编号,给出所有“ ...
- 题解——code[vs] 1506 传话(传递闭包)
裸的传递闭包 直接Floyd暴力即可 #include <cstdio> #include <algorithm> #include <cstring> using ...
- codevs 搜索题汇总(青铜+白银级)
1792 分解质因数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描 ...
- code vs1506传话(塔尖)+tarjan图文详解
1506 传话 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到 ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
随机推荐
- 我的第一个chrome扩展(1)——读样例,实现时钟
学习chrome扩展开发: 与网页类似,需要的知识:html,javascript chrome扩展程序的构成: manifest.json:对扩展程序的整体描述文件 { "manifest ...
- wpf前端设计
http://www.cnblogs.com/w-wanglei/archive/2016/03/14/5274298.html#_nav_0
- 20145211 《Java程序设计》第2周学习总结——桃花依旧笑春风
教材学习内容总结 基本类型 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节,double 8字节 字符 char 2字节(包括字母.汉字 ...
- PHP运行错最有效解决办法Fatal error: Out of memory (allocated 786432) (tried to allocate 98304 bytes) in H:\freehost\zhengbao2\web\includes\lib_common.php on line 744
原文 PHP运行错最有效解决办法Fatal error: Out of memory (allocated 6029312) Fatal error: Out of memory (allocated ...
- 【C++】函数指针宏定义
看耗子叔文章学习虚函数表(http://blog.csdn.net/haoel/article/details/1948051)的时候被例子的第一句惊到了 typedef void(*Fun)(voi ...
- PresentViewController切换界面(一些系统自带的页面切换动画)
视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画, 其中切换方法如下: – presentViewCon ...
- Effective Project Communications
I was recently invited to speak at a conference in Singapore on Effective Project Communications. I' ...
- ExtractTablesFromSQL
public static string[] ExtractTablesFromSQL(string cmdString) { return Regex.Matches(cmdString, @&qu ...
- JS给swf传参数
不仅可以用flashvars ="name=12&age=23" 还可以在指定swf地址时传参数src="test.swf?name=12&age=23& ...
- Session服务器配置指南与使用经验
一.摘要 所有Web程序都会使用Session保存数据. 使用独立的Session服务器可以解决负载均衡场景中的Session共享问题.本文介绍.NET平台下建立Session服务器的几种办法, 并介 ...