???
查看原帖
???
1108083
GXA3336gxa楼主2025/1/18 10:43

我也看不懂这是个啥,能改吗???

#include<bits/stdc++.h>
using namespace std;
int n,m,in[200005],head[200005],num,dis[200005];
struct node
	{
		int to,next;
	}s[10000005];
int add(int x,int y)
    {
		s[num++].next=head[x];
	 	s[num].to=y;
	 	head[x]=num;
	 	return 0;
	}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		in[y]++;
		add(x,y);
	}
	queue<int>q;
	for(int i=1;i<=n;++i)
	{
		if(in[i]==0)
		{
			q.push(i);
			dis[i]=1; 
		}
	}
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		for(int i=head[u];i;i=s[i].next)
		{
			int k=s[i].to;
			in[k]--;
			if(in[k]==0)
			{
				q.push(k);
				dis[k]=dis[u]+1;
			}
		}
	}
	for(int i=1;i<=n;++i)
	{
		printf("%d\n", dis[i]);
	}
	return 0;
}
2025/1/18 10:43
加载中...