Pagini recente » Cod sursa (job #559776) | Cod sursa (job #459094) | Cod sursa (job #425139) | Cod sursa (job #1074061) | Cod sursa (job #401467)
Cod sursa(job #401467)
#include <iostream.h>
#include <fstream.h>
ifstream f("ctc.in");
ofstream g("ctc.out");
int a[501][501],n,i,j,s[501],p[501],nr,m;
void citire(){
f>>n>>m;
while(f>>i>>j)
a[i][j]=1;
}
void dfs(int x){
s[x]=nr;int i;
for(i=1;i<=n;i++)
if(a[i][x]&&!s[i])
dfs(i);
}
void dfp(int x){
p[x]=nr;int i;
for(i=1;i<=n;i++)
if(a[x][i]&&!p[i])
dfp(i);
}
int main(){
citire();
nr=0;
for(i=1;i<=n;i++)
if(!s[i]){
nr++;
dfs(i);
dfp(i);
for(int j=1;j<=n;j++)
if(s[j]!=p[j])
s[j]=p[j]=0;
}
g<<nr<<"\n";
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
if(s[j]==i)
g<<j<<" ";
g<<"\n";
}
}