比赛 顾研NOIP2011模拟赛 评测结果 TWWTTTTTTT
题目名称 旅游电车 最终得分 0
用户昵称 Truth.Cirno 运行时间 8.061 s
代码语言 C++ 内存使用 27.68 MiB
提交时间 2012-10-18 10:44:26
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;

short waynum[5010],wayto[5010][60];
bool used[5010],map[5010][5010];

void fillmap(int sou,int pos)
{
	if (sou!=pos)
		map[sou][pos]=true;
	int i;
	for (i=0;i<waynum[pos];i++)
	{
		if (!used[wayto[pos][i]])
		{
			used[wayto[pos][i]]=true;
			fillmap(sou,wayto[pos][i]);
			used[wayto[pos][i]]=false;
		}
	}
}

int main(void)
{
	freopen("buss.in","r",stdin);
	freopen("buss.out","w",stdout);
	int i,j,n,m,a,b;
	bool flag;
	while (scanf("%d",&n))
	{
		if (n==0)
			break;
		scanf("%d",&m);
		memset(waynum,0,sizeof(waynum));
		memset(wayto,0,sizeof(wayto));
		memset(map,0,sizeof(map));
		for (i=1;i<=m;i++)
		{
			cin>>a>>b;
			wayto[a][waynum[a]++]=b;
		}
		for (i=1;i<=n;i++)
		{
			memset(used,0,sizeof(used));
			used[i]=true;
			fillmap(i,i);
		}
		for (i=1;i<=n;i++)
		{
			flag=true;
			for (j=1;j<=n;j++)
			{
				if (i==j)
					continue;
				if (map[i][j]!=map[j][i])
				{
					flag=false;
					break;
				}
			}
			if (flag)
				cout<<i<<' ';
		}
		cout<<endl;
	}
	return(0);
}