1 条题解

  • 0
    @ 2026-10-6 16:01:07
    #include<bits/stdc++.h>
    using namespace std;
    const int N=5e3+5;
    vector<int>G[N];
    int ind[N];
    vector<int>ans;
    int main(){
    	int n,m;
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		int x,y;
    		cin>>x>>y;
    		G[x].push_back(y);
    		ind[y]++;
    	}
    	bool ok=0,flag=0;
    	queue<int>q;
    	for(int i=1;i<=n;i++){
    		if(ind[i]==0){
    			if(ok==1)flag=1;
    			else ok=1;
    			q.push(i);
    			ans.push_back(i);
    		}
    	}
    	ok=0;
    	while(!q.empty()){
    		int now=q.front();q.pop();
    		for(int i=0;i<G[now].size();i++){
    			if(--ind[G[now][i]]==0){
    				if(ok==1)flag=1;
    				else ok=1;
    				q.push(G[now][i]);
    				ans.push_back(G[now][i]);
    			}
    		}
    		ok=0;
    	}
    	for(int i=0;i<ans.size();i++)cout<<ans[i]<<"\n";
    	cout<<flag;
    	return 0;
    } 
    
    • 1

    信息

    ID
    1098
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者