HDU4324 Triangle LOVE 拓扑求调TLE
  • 板块学术版
  • 楼主hzoi_Shadow
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/8/7 18:56
  • 上次更新2023/11/3 05:20:52
查看原帖
HDU4324 Triangle LOVE 拓扑求调TLE
848964
hzoi_Shadow楼主2023/8/7 18:56
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
struct node
{
	int nxt,to;
}e[5000001];
int din[2001],head[5000001],cnt=0;
char m[2001][2001]; 
void add(int u,int v)
{
	cnt++;
	e[cnt].nxt=head[u];
	e[cnt].to=v;
	head[u]=cnt;
}
bool top_sort(int n)
{
	queue<int>q;
	int i,k,num=0;
	for(i=1;i<=n;i++)
	{
		if(din[i]==0)
		{
			q.push(i);
		}
	}
	while(q.empty()==0)
	{
		k=q.front();
		q.pop();
		num++;
		for(i=head[k];i!=0;i=e[i].nxt)
		{
			din[e[i].to]--;
			if(din[e[i].to]==0)
			{
				q.push(e[i].to);
			}
		}
	}
	if(num==n)
	{
		return true;
	}
	else
	{
		return false;
	}
}
int main()
{
    int t,n,i,j,k;
	scanf("%d",&t);
	for(i=1;i<=t;i++)
	{
		cnt=0;
		scanf("%d",&n);
		memset(e,0,sizeof(e));
		memset(din,0,sizeof(din));
		memset(head,0,sizeof(head));
		for(j=1;j<=n;j++)
		{
			for(k=1;k<=n;k++)
			{
				scanf("%c",&m[j][k]);
				if(m[j][k]=='1')
				{
					add(j,k);
					din[k]++;
				} 
			}
		}
		if(top_sort(n)==false)
		{
			printf("Case #%d: Yes\n",i);
		}
		else
		{
			printf("Case #%d: No\n",i);
		}
	} 
    return 0;
}
2023/8/7 18:56
加载中...