http://codevs.cn/problem/1506/

1506 传话

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
 
题目描述 Description

一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人。

如果a认识b,b不一定认识a。

所有人从1到n编号,给出所有“认识”关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n。

输入描述 Input Description

第一行是n和m,表示人数和认识关系数。

接下来的m行,每行两个数a和b,表示a认识b。1<=a, b<=n。认识关系可能会重复给出,但一行的两个数不会相同。

输出描述 Output Description

一共n行,每行一个字符T或F。第i行如果是T,表示i发出一条新消息会传回给i;如果是F,表示i发出一条新消息不会传回给i。

样例输入 Sample Input

4 6

1 2

2 3

4 1

3 1

1 3

2 3

样例输出 Sample Output

T

T

T

F

数据范围及提示 Data Size & Hint

n<=1000

1<=a, b<=n

分析:

广搜,因为如果搜索到某层K,如果不是由i层转回到i层的一条回路,而是一条死路,那么以后必然也不用搜索这层了。

AC代码:

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <string.h>
  5. #include <string>
  6. #include <math.h>
  7. #include <stdlib.h>
  8. #include <queue>
  9. #include <stack>
  10. #include <set>
  11. #include <map>
  12. #include <list>
  13. #include <iomanip>
  14. #include <vector>
  15. #pragma comment(linker, "/STACK:1024000000,1024000000")
  16. #pragma warning(disable:4786)
  17.  
  18. using namespace std;
  19.  
  20. const int INF = 0x3f3f3f3f;
  21. const int MAX = 1e3 + ;
  22. const double eps = 1e-;
  23. const double PI = acos(-1.0);
  24.  
  25. bool f[MAX][MAX];
  26. bool mark[MAX];
  27. int n,m,a,b,flag,i;
  28.  
  29. void bfs(int start)
  30. {
  31. queue<int >q;
  32. int p;
  33. q.push(start);
  34. while(!q.empty())
  35. {
  36. int temp=q.front(); q.pop();
  37. for(p=;p<=n;p++)
  38. {
  39. if(f[temp][p]&&!mark[p])
  40. {
  41. mark[p]=;
  42. q.push(p);
  43. }
  44. if(mark[i])
  45. {
  46. flag=;
  47. return ;
  48. }
  49. }
  50. }
  51. }
  52.  
  53. int main()
  54. {
  55. cin>>n>>m;
  56.  
  57. memset(f,,sizeof(f));
  58. for(i=;i<m;i++) scanf("%d%d",&a,&b), f[a][b]=;
  59.  
  60. for(i=;i<=n;i++)
  61. {
  62. memset(mark,,sizeof(mark)); flag=;
  63. bfs(i);
  64. if(flag)
  65. printf("T\n");
  66. else
  67. printf("F\n");
  68. }
  69. return ;
  70. }

看了题解,发现有人用Floyd ,主要是数据量小,orz

AC代码:

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cstring>
  4. int f[][];
  5. int n,m,x,y;
  6. using namespace std;
  7. int main()
  8. {
  9. scanf("%d%d",&n,&m);
  10. memset(f , , sizeof(f));
  11. for(int i = ;i <= m;++ i){
  12. scanf("%d%d",&x,&y);
  13. f[x][y] = ;
  14. }
  15. for(int k = ;k <= n;++ k)
  16. for(int i = ;i <= n;++ i)
  17. for(int j = ;j <= n;++ j)
  18. if(f[i][k] == && f[k][j] == )
  19. f[i][j] = ;
  20. for(int i = ;i <= n;++ i)
  21. if(f[i][i] == )
  22. cout<<"T"<<endl;
  23. else
  24. cout<<"F"<<endl;
  25. return ;
  26. }

codevs 1506 传话的更多相关文章

  1. Codevs 1506 传话(floyd大法好)。

    1506 传话  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 一个朋友网络,如果a认识b,那么如果a第 ...

  2. code vs 1506 传话

    codevs 1506 传话(时间限制: 1 s 空间限制: 128000 KB) 题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b, ...

  3. AC日记——传话 codevs 1506 (tarjan求环)

    1506 传话  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 一个朋友网络,如果a认识b,那么如果a第 ...

  4. 1506 传话 (暴力DFS或者Tarjan模板题)

    题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人. 如果a认识b,b不一定认识a. 所有人从1到n编号,给出所有“ ...

  5. 题解——code[vs] 1506 传话(传递闭包)

    裸的传递闭包 直接Floyd暴力即可 #include <cstdio> #include <algorithm> #include <cstring> using ...

  6. codevs 搜索题汇总(青铜+白银级)

    1792 分解质因数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze   题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描 ...

  7. code vs1506传话(塔尖)+tarjan图文详解

    1506 传话  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解   题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到 ...

  8. codevs 3289 花匠

    题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...

  9. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

随机推荐

  1. 我的第一个chrome扩展(1)——读样例,实现时钟

    学习chrome扩展开发: 与网页类似,需要的知识:html,javascript chrome扩展程序的构成: manifest.json:对扩展程序的整体描述文件 { "manifest ...

  2. wpf前端设计

    http://www.cnblogs.com/w-wanglei/archive/2016/03/14/5274298.html#_nav_0

  3. 20145211 《Java程序设计》第2周学习总结——桃花依旧笑春风

    教材学习内容总结 基本类型 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节,double 8字节 字符 char 2字节(包括字母.汉字 ...

  4. 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 ...

  5. 【C++】函数指针宏定义

    看耗子叔文章学习虚函数表(http://blog.csdn.net/haoel/article/details/1948051)的时候被例子的第一句惊到了 typedef void(*Fun)(voi ...

  6. PresentViewController切换界面(一些系统自带的页面切换动画)

    视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画, 其中切换方法如下: – presentViewCon ...

  7. Effective Project Communications

    I was recently invited to speak at a conference in Singapore on Effective Project Communications. I' ...

  8. ExtractTablesFromSQL

    public static string[] ExtractTablesFromSQL(string cmdString) { return Regex.Matches(cmdString, @&qu ...

  9. JS给swf传参数

    不仅可以用flashvars ="name=12&age=23" 还可以在指定swf地址时传参数src="test.swf?name=12&age=23& ...

  10. Session服务器配置指南与使用经验

    一.摘要 所有Web程序都会使用Session保存数据. 使用独立的Session服务器可以解决负载均衡场景中的Session共享问题.本文介绍.NET平台下建立Session服务器的几种办法, 并介 ...