Pagini recente » Cod sursa (job #187582) | Cod sursa (job #2765089) | Cod sursa (job #281745) | Cod sursa (job #1275084) | Cod sursa (job #2978718)
#include <fstream>
using namespace std;
ifstream fin("ctc.in");
ofstream fout("ctc.out");
int a[10005][10005], n, m, viz[10005], numar;
void tareconexe(int val);
int main()
{
int i, j, k, x, y;
fin >> n >> m;
for (i = 1; i <= m; i++) {
fin >> x >> y;
a[x][y] = 1;
}
for (i = 1; i <= n; i++)
a[i][i] = 1;
for (k = 1; k <= n; k++)
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
if (a[i][j] == 0)
a[i][j] = a[i][k] * a[k][j];
tareconexe(1);
fout << numar << "\n";
tareconexe(2);
return 0;
}
void tareconexe(int val)
{
int i, j;
numar = 0;
for (i = 1; i <= n; i++)
if (viz[i] != val) {
viz[i] = val;
numar++;
if (val == 2)
fout << i << " ";
for (j = 1; j <= n; j++)
if (a[i][j] == 1 && a[j][i] == 1 && viz[j] != val) {
if (val == 2)
fout << j << " ";
viz[j] = val;
}
if (val == 2)
fout << "\n";
}
}