蒟蒻求助!!找不出错啦
查看原帖
蒟蒻求助!!找不出错啦
278299
masquerade楼主2020/5/28 09:32

20分代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int MAX=1000010;
int head[MAX],ver[MAX],nxt[MAX],edge[MAX],dist[MAX],st[MAX],tot;
int ru[MAX],chu[MAX];
queue<int>q;
int maxn;

void add(int x,int y){
	nxt[++tot]=head[x];
	head[x]=tot;
	ver[tot]=y;
}

void bfs(){
	while(!q.empty()){
		int f=q.front();
		q.pop();
		for(int i=head[f];i;i=nxt[i]){
			int v=ver[i];
			ru[v]--;
			if(!ru[v]){
				dist[v]=dist[f]+1;
				q.push(v);
			}
		}
	}
}

int main(){
	cin>>n>>m;
	int u,v;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		ru[v]++;
		chu[u]++;
		add(u,v);
	}
	for(int i=1;i<=n;i++){
		if(!ru[i]){
			q.push(i);
			dist[i]=1;
			break;
		}
	}
	bfs();
	for(int i=1;i<=n;i++){
		cout<<dist[i]<<endl;
	}
	return 0;
}
2020/5/28 09:32
加载中...