手搓
2025-08-22 11:29:30
发布于:广东
4阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
vector<int> r;
struct node{
int id;
vector<int> p;
};
vector<node> k;
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
r.push_back(0);
node a;
a.id=i;
k.push_back(a);
}
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
k[a-1].p.push_back(b);
}
string s="";
bool circle=false;
for(int t=0;t<k.size();t++){
int f=-1;
for(int i=0;i<r.size();i++)
r[i]=0;
for(int i=0;i<k.size();i++){
for(int j=0;j<k[i].p.size();j++){
if(k[i].p[j]==0)
r[i]=-1;
else
r[k[i].p[j]-1]++;
}
}
for(int i=0;i<r.size();i++)
if((r[i]==0)&&(f==-1))
f=i;
if(f==-1){
circle=true;
break;
}
k[f].p.clear();
s+=to_string(k[f].id+1)+" ";
k[f].p.push_back(0);
}
if(circle)
cout<<"has circle.";
else
cout<<s;
return 0;
}
这里空空如也
有帮助,赞一个