Pagini recente » Cod sursa (job #1246530) | Cod sursa (job #1874522) | Cod sursa (job #1390387) | Cod sursa (job #1109150) | Cod sursa (job #1390384)
#include<fstream>
#include <iostream>
using namespace std;
fstream f("ctc.in", ios::in);
fstream g("ctc.out", ios::out);
int a[100][100], n, m, nrc, suc[100], pred[100];
void citire()
{
int x, y;
f >> n >> m;
for (int i = 1; i <= m; i++)
{
f >> x >> y;
a[x][y] = 1;
}
}
void dfsuc(int nod)
{
int k;
suc[nod] = nrc;
for (k = 1; k <= n; k++)
if (a[nod][k] == 1 && suc[k] == 0)
dfsuc(k);
}
void dfpred(int nod)
{
int k;
pred[nod] = nrc;
for (k = 1; k <= n; k++)
if (a[k][nod] == 1 && pred[k] == 0)
dfpred(k);
}
int main()
{
for (int i = 1; i <= n; i++)
cout << suc[i] << " " << pred[i];
citire();
nrc = 1;
for (int i = 1; i <= n; i++)
if (suc[i] == 0)
{
dfsuc(i);
dfpred(i);
for (int j = 1; j <= n; j++)
if (suc[j] != pred[j])
suc[j] = pred[j] = 0;
nrc++;
}
g << nrc-1 << endl;
for (int i = 1; i<nrc; i++)
{
for (int j = 1; j <= n; j++)
if (suc[j] == i) g << j << " ";
g << endl;
}
cin.get();
return 0;
}