Pagini recente » Borderou de evaluare (job #3366659) | Borderou de evaluare (job #3366651) | Cod sursa (job #3366652) | Borderou de evaluare (job #3366662) | Cod sursa (job #3366657)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector <int> v[50005];
vector <int> drum[50005];
int grd[50005],vis[50005];
int vmax=-1,nr=0;
int n,m,i,j,a,b,ok,ciclu,marime,t;
bool dfs(int nod){
drum[nr].push_back(nod);
vis[nod]=1;
for(int x : v[nod]){
if(vis[x]==0){
if(dfs(x)){
return true;
}
}
else if(vis[x]==1){
return true;
}
}
vis[nod]=2;
return false;
}
int main(){
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>a>>b;
v[a].push_back(b);
grd[b]++;
}
ok=1;
ciclu=1;
for(i=1;i<=n;i++){
if(grd[i]==0){
ok=0;
nr++;
if(dfs(i)==true){
ciclu=0;
}
marime=drum[nr].size();
if(marime>vmax){
vmax=marime;
}
}
}
if(ok==1){
fout<<"CICLU";
}
else if(ciclu==0){
fout<<"CICLU";
}
else{
for(i=0;i<vmax;i++){
for(j=1;j<=nr;j++){
t=drum[j].size();
if(i<t){
fout<<drum[j][i]<<" ";
}
}
}
}
}