Pagini recente » Cod sursa (job #916305) | Cod sursa (job #2900793) | Cod sursa (job #3038692) | Cod sursa (job #640697) | Cod sursa (job #2998419)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ctc.in");
ofstream g("ctc.out");
int n , m , comp;
vector < int > v[105] , vt[105] , sol[105];
stack < int > st;
int used[105];
void dfs(int nod)
{
used[nod] = 1;
for (auto i : v[nod])
{
if(!used[i])
{
dfs(i);
}
}
st . push(nod);
}
void dfs1(int nod)
{
sol[comp] . push_back(nod);
used[nod] = 2;
for (auto i : vt[nod])
{
if(used[i] != 2)
{
dfs1(i);
}
}
}
int main()
{
f >> n >> m;
for ( int i = 1 ; i <= m ; i++)
{
int x , y;
f >> x >> y;
v[x] . push_back(y);
vt[y] . push_back(x);
}
for ( int i = 1 ; i <= n ; i++)
{
if(!used[i])
dfs(i);
}
while(!st . empty())
{
if(used[st . top()] != 2)
{
comp++;
dfs1(st . top());
}
st . pop();
}
g << comp << '\n';
for ( int i = 1 ; i <= comp ; i++)
{
for ( auto x : sol[i])
g << x << " ";
g << '\n';
}
return 0;
}