xuput_sta15
2016-04-10 20:10
204 查看
1189: 爱游戏的招财猫
时间限制: 1 Sec 内存限制: 64 MB提交: 35 解决: 3
[提交][状态][讨论版]
题目描述
招财猫正在玩一个游戏,他向他的所有联系人发一条短信“这里是来自xxx的问候。”,收到这条短信的人会将其原封不动地转发给自己通讯录里的所有人。如果招财猫最后也收到自己这条短信,那么招财猫会很开心
现在给你N个人和他们各自的通讯录都有谁,问如果编号为i的人玩这个游戏,他最后会收到源自自己的短信么?(1<=i<=N)
通讯录是单向的。(招财猫的通讯录里有你,但你的通讯录里不一定有招财猫)
输入
第一行给定两个整数N,M,表示N个人,M种关系( N<=1000)接下来M行, 每行两个整数a和b,表示a的通讯录里有b。1<=a,b<=N。(保证a!=b)
输出
一共N行,每行一个字符T或F 。第 i 行表示编号为i的人是否收到了源自自己发出的短信 ,如果收到了,就输出T,反之输出F。
样例输入
3 3 1 2 2 3 3 1
样例输出
T T T
code:
#include <cstdio> #include <iostream> #include <cstring> using namespace std; typedef long long ll; int flag[1005]; int vis[1005][1005]; int maze[1005][1005]; int N,M; void dfs(int s,int to,int goal) { if(s==goal) { flag[goal]=1; return ; } int t=0; for(t=1;t<=N;t++) { if(maze[s][t]==1) if(vis[s][t]==0) { vis[s][t]=1; dfs(t,0,goal); vis[s][t]=0; } } } int main(void) { cin>>N>>M; memset(flag,0,sizeof flag); for(int i=0;i<M;i++) { ll a,b; cin>>a>>b; maze[a][b]=1; } for(int i=1;i<=N;i++) for(int a=1;a<=N;a++) { if( maze[i][a]==1 ) dfs(a,0,i); } for(int i=1;i<=N;i++) { if(flag[i]) cout<<"T"<<endl; else cout<<"F"<<endl; } }
相关文章推荐
- hdu 3183 A Magic Lamp(ST表)
- 20145319 第六周学习总结
- 课题的跨专业组队
- Tomcat作为Servlet容器的基本功能
- 枚举小结
- POJ 1465 Multiple
- 类似LCS,构成目标单词(POJ2192)
- 数据结构KMP算法中next函数的求解思想及其解释
- 20145317彭垚 《Java程序设计》第6周学习总结
- oracle小数点前零丢失的问题
- Swift 入门基础-2
- innodb recovery
- 【Android基础】网络图片查看器
- 简单的秒表定时器
- W3C标准与规范
- 排序问题-希尔排序
- Linux命令整合之alias
- Unity 设置Android SDK path
- SSH开发环境整合搭建
- 关于U盘启动操作系统《30天自制操作系统》