比赛 20111111 评测结果 AAAAAAAAAA
题目名称 传话 最终得分 100
用户昵称 Truth.Cirno 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-11 10:33:28
显示代码纯文本
#include <cstdio>
using namespace std;

int n,m,way[1001]={0},map[1001][999]={{0}};

bool bfs(int st,int en)
{
	int i,tail=0,head=0,que[1000]={st};
	bool used[1001]={false};
	while (tail<=head)
	{
		for (i=0;i<way[que[tail]];i++)
		{
			if (!used[map[que[tail]][i]])
			{
				head++;
				que[head]=map[que[tail]][i];
				used[map[que[tail]][i]]=true;
				if (que[head]==en)
					return(1);
			}
		}
		tail++;
	}
	return(0);
}

int main(void)
{
	freopen("messagez.in","r",stdin);
	freopen("messagez.out","w",stdout);
	int i,j,temp,temp2;
	bool dup,able;
	scanf("%d %d\n",&n,&m);
	for (i=1;i<=m;i++)
	{
		scanf("%d %d\n",&temp,&temp2);
		dup=false;
		for (j=0;j<way[temp];j++)
			if (map[temp][j]==temp2)
			{
				dup=true;
				break;
			}
		if (!dup)
			map[temp][way[temp]++]=temp2;
	}
	for (i=1;i<=n;i++)
	{
		able=bfs(i,i);
		if (able)
			printf("T\n");
		else
			printf("F\n");
	}
	fclose(stdin);
	fclose(stdout);
	return(0);
}