Pagini recente » Cod sursa (job #2982053) | Cod sursa (job #3249987) | Cod sursa (job #2004371) | Cod sursa (job #406386) | Cod sursa (job #1217568)
#include<fstream>
#include<vector>
#include<stack>
#include<algorithm>
#define MAXN 100005
#define pb push_back
using namespace std;
ifstream cin("ctc.in");
ofstream cout("ctc.out");
int N,M,viz[MAXN];
vector<int> G[MAXN],GT[MAXN];
stack<int> st;
void DFS(int x) {
int i;
for(i=0;i<G[x].size();i++)
if (!viz[G[x][i]]) { viz[G[x][i]]=1;
DFS(G[x][i]); }
st.push(x);
}
void DFST(int x){
int i;
viz[x]=1;
for(i=0;i<GT[x].size();i++)
if(!viz[GT[x][i]])
DFST(GT[x][i]);
cout<<x<<" ";
}
int main() {
int i,x,y;
cin>>N>>M;
for(i=1;i<=M;i++) {
cin>>x>>y;
G[x].pb(y);
GT[y].pb(x); }
memset(viz,0,sizeof(viz));
for(i=1;i<=N;i++)
if (!viz[i]) { viz[i]=1;
DFS(i); }
memset(viz,0,sizeof(viz));
while(st.size()>0) {
x=st.top();
st.pop();
if(!viz[x]) {
DFST(x);
cout<<"\n"; }
}
return 0;
}