50tps求助,样例过了
查看原帖
50tps求助,样例过了
1397217
panrNico楼主2024/8/13 11:30

显示错的5个测试点都是最后一个数的问题

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,rd[N],dis[N],cnt=0,abc=0,cba=0,ans=0;
vector<int>g[N];
queue<int>q;
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
		rd[v]++;
	}
	for(int i=1;i<=n;i++){
		if(!rd[i]){
			q.push(i);
			abc++;
		}
	}
	if(abc){
		ans=1;
	}
	while(!q.empty()){
		int k=q.front();
		q.pop();
		cout<<k<<endl;
		for(auto i:g[k]){
			rd[i]--;
			dis[i]=max(dis[i],dis[k+1]);
			if(!rd[i]){
				q.push(i);
				cba++;
			}
		}
		if(cba){
			ans=1;
		}
	}
	cout<<ans;
	return 0;
}
2024/8/13 11:30
加载中...