求助(玄关)
  • 板块灌水区
  • 楼主_WHX985_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/10 17:04
  • 上次更新2024/12/10 20:42:20
查看原帖
求助(玄关)
1035401
_WHX985_楼主2024/12/10 17:04

Rt 0pts 本人目标60pts; 不要满分的 P1173

#include<bits/stdc++.h>
using namespace std;
int pru[100005];
int n,m,x,y,dis[1000001],num,in[1000001],out[1000001],f[10001][10001];
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		out[x]++; 
		in[y]++;
		f[x][out[x]]=y;
	}
	int l=1,r=0;
	for(int i=1;i<=n;i++){
		if(in[i]==0){
			pru[++r]=i;
			dis[i] = 1;
		}
	}
	while(l<=r){
		int u=pru[r]; 
		r--;
		for(int i=1;i<=out[u];i++){
			in[f[u][i]]--;
			if(in[f[u][i]]==0){
				pru[++r]=f[u][i]; 
				dis[f[u][i]]=dis[u]+1;
			}
		}
	}
	for(int i=1;i<=n;++i){
		cout<<dis[i]<<endl;
	}
	return 0;
}
2024/12/10 17:04
加载中...