记录编号 262567 评测结果 AAAAAAAAAA
题目名称 [金陵中学2007] 传话 最终得分 100
用户昵称 GravatarSOBER GOOD BOY 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-05-21 09:11:00 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<algorithm>
#define Mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int maxn=1010;
int n,m,len,Tim,cnt;
stack<int> q;
struct node
{
	int to,next;
}e[100*maxn];
bool flag[maxn];
void Insert(int,int);
void Dfs(int );
bool fe[maxn];
int Low[maxn],head[maxn],dfn[maxn],a[maxn]={0},ru[maxn],w[maxn],chu[maxn],Belong[maxn];
int ma()
{

	freopen("messagez.in","r",stdin);
	freopen("messagez.out","w",stdout);	
	scanf("%d%d",&n,&m);
	memset(head,-1,sizeof(head));
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		Insert(x,y);
	}
	for(int i=1;i<=n;i++)
	{
		if(dfn[i]==0)
		{
			Dfs(i);
		}
	}	
	/*for(int i=1;i<=n;i++)
	{
		int tot=0;
		for(int j=head[i];j!=-1;j=e[j].next)
		{
			int h=e[j].to;
			if(Belong[h]!=Belong[i])
			{
				ru[Belong[h]]++;
				chu[Belong[i]]++;
			}
		}	
	}*/
	int ans1=0,ans2=0;
	ans2=max(ans2,ans1);
	for(int i=1;i<=n;i++)
	{
		if(fe[i]==1)
		{
			printf("T\n");
		}
		else
		{
			printf("F\n");
		}
	}
	 
}
void Insert(int  x,int y)
{
	len++;
	e[len].to=y;
	e[len].next=head[x];
	head[x]=len;
}
void Dfs(int x)
{//puts("QQQQQQQQQQQQQQQAQQQQQQQQQQQQ");
	Tim++;dfn[x]=Low[x]=Tim;q.push(x);flag[x]=1;
	for(int i=head[x];i!=-1;i=e[i].next)
	{
		int t=e[i].to;
		if(dfn[t]==0)
		{
			Dfs(t);
			Low[x]=min(Low[x],Low[t]);
		}
		else if(flag[t]==1)Low[x]=min(Low[x],dfn[t]);
	}
	if(dfn[x]==Low[x])
	{
		cnt++;
		int tot=0;
		int k=0;
		do
		{
			tot++;
			k=q.top();q.pop();
			fe[k]=1;
			flag[k]=0;
			Belong[k]=cnt;
		}while(k!=x);
		if(tot==1) fe[k]=0;
	}
}
int hhh=ma();
int main()
{;
}