不明所以的RE最后一个点
查看原帖
不明所以的RE最后一个点
1408054
zhaolt2012楼主2025/8/1 11:18
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100010;
const int MAXM=200010;
queue<int>q; 
int n,m,ans,r[MAXN],cnt[MAXN];
int v[MAXM],head[MAXN],nxt[MAXM],idx;
void addEdge(int uu,int vv)
{
	idx++;
	nxt[idx]=head[uu];
	head[uu]=idx;
	v[idx]=vv;
	r[vv]++;
}
void tp(int s)
{
	q.push(s);
	cnt[s]=1;
	while(!q.empty())
	{
		int uu=q.front();
		q.pop();
		for(int i=head[uu];i!=0;i=nxt[i])
		{
			int vv=v[i];
			r[vv]--;
			cnt[vv]=max(cnt[uu]+1,cnt[vv]);
			if(!r[vv])
			{
				r[vv]--;
				q.push(vv);
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int uu,vv;
		cin>>uu>>vv;
		addEdge(uu,vv);
	}
	for(int i=1;i<=m;i++) if(!r[i]) tp(i);
	for(int i=1;i<=n;i++) cout<<cnt[i]<<"\n";
}

2025/8/1 11:18
加载中...