Pagini recente » Cod sursa (job #146555) | Cod sursa (job #2368240) | Cod sursa (job #1636229) | Cod sursa (job #1979091) | Cod sursa (job #3304420)
#include <bits/stdc++.h>
using namespace std;
///SOL CU DFS
int n,m;
vector<int>graph[50005];
bool viz[50005], in_ciclu[50005];
vector<int>sortare;
void dfs(int nod, bool ciclu=0)
{
viz[nod]=1;
in_ciclu[nod]=1;
for(auto x:graph[nod])
{
if(in_ciclu[x]) ///vedem daca e ciclu (nu ne trb la prob asta)
ciclu=1;
if(!viz[x])
dfs(x);
}
sortare.push_back(nod);
}
int main()
{
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
cin>>n>>m;
for(int i=1; i<=m; i++)
{
int a,b;
cin>>a>>b;
graph[a].push_back(b);
}
for(int i=1; i<=n; i++)
{
bool ciclu=0;
if(!viz[i])
dfs(i,ciclu);
if(ciclu)
{
cout<<"Ciclu!";
return 0;
}
}
reverse(sortare.begin(), sortare.end());
for(auto x: sortare)
cout<<x<<" ";
return 0;
}