Pagini recente » Cod sursa (job #1252770) | Cod sursa (job #2170922) | Cod sursa (job #676733) | Cod sursa (job #1622264) | Cod sursa (job #1090222)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
fstream in("ctc.in",ios::in),out("ctc.out",ios::out);
const int N=100001;
int n,m,st[N],k,t,sf[2*N];
vector<int> a[N];
void dfs(int p){
sf[p]=-1;
for(vector<int>::iterator it=a[p].begin() ; it!=a[p].end() ; it++){
if(!sf[*it]){
dfs(*it);
}
}
sf[p]=++t;
st[++k]=p;
}
int main()
{
int x,y;
in>>n>>m;
for(int i=1 ; i<=m ; i++){
in>>x>>y;
a[y].push_back(x);
}
x=0;
for(int i=1 ; i<=n ; i++){
if(!sf[i]){
x++;
dfs(i);
st[++k]=0;
}
}
out<<x<<'\n';
while(k--){
if(st[k]){
out<<st[k]<<' ';
}else{
out<<'\n';
}
}
return 0;
}