比赛 |
20120809 |
评测结果 |
AAATTTTTTT |
题目名称 |
消息传递 |
最终得分 |
30 |
用户昵称 |
王者自由 |
运行时间 |
7.064 s |
代码语言 |
C++ |
内存使用 |
1.64 MiB |
提交时间 |
2012-08-09 10:20:23 |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 100000 + 10;
int n, m, a, b;
vector<int> G[N];
bool l[N], o[N];
void DFS(int s, int u) {
if(o[s]) return;
l[u] = 1;
if(u == s) {
o[s] = 1;
return;
}
for(int i=0; i<G[u].size(); i++)
if(!l[G[u][i]])
DFS(s, G[u][i]);
}
int main() {
freopen("messagew.in", "r", stdin);
freopen("messagew.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i=0; i<m; i++) {
scanf("%d %d", &a, &b);
G[a].push_back(b);
}
for(int i=1; i<=n; i++) {
memset(l, 0, sizeof(l));
for(int j=0; j<G[i].size(); j++)
DFS(i, G[i][j]);
}
for(int i=1; i<=n; i++)
printf("%c\n", o[i] ? 'T' : 'F');
return 0;
}