Pagini recente » Cod sursa (job #2233850) | Cod sursa (job #2101512) | Cod sursa (job #1764368) | Cod sursa (job #2674971) | Cod sursa (job #2523812)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ctc.in");
ofstream out("ctc.out");
const int Nmax = 1e5 + 5;
bool seen[Nmax];
int S[Nmax];
int N,M,L;
vector<int> G[Nmax],Gt[Nmax];
static inline void dfs(int node) {
seen[node] = 1;
for(auto i : G[node])
if(!seen[i])
dfs(i);
S[++L] = node;
}
static inline void afis(int node, bool K) {
seen[node] = 1;
if(K)
out << node << " ";
for(auto i : Gt[node])
if(!seen[i])
afis(i,K);
}
int main() {
ios_base::sync_with_stdio(0);
in.tie(0),out.tie(0);
in >> N >> M;
while(M--) {
int x,y;
in >> x >> y;
G[x].emplace_back(y);
Gt[y].emplace_back(x);
}
for(int i = 1; i <= N; ++i)
if(!seen[i])
dfs(i);
M = 0;
memset(seen,0,sizeof(seen));
for(int i = N ; i >= 1; --i)
if(!seen[S[i]])
afis(S[i],0),M++;
out << M << '\n';
memset(seen,0,sizeof(seen));
for(int i = N ; i >= 1; --i)
if(!seen[S[i]])
afis(S[i],1),out << '\n';
return 0;
}