Pagini recente » Cod sursa (job #309735) | Cod sursa (job #6399) | Cod sursa (job #2666228) | Cod sursa (job #2314870) | Cod sursa (job #928799)
Cod sursa(job #928799)
#include<iostream>
#include<fstream>
struct nod{
int data;
nod *next;
};
using namespace std;
ifstream citire("dfs.in");
ofstream afisare("dfs.out");
int dfs(int (&viz)[100],int x,nod *graf[100]){
int i;
nod *p;
p=graf[x]->next;
while(p!=NULL){
if(viz[p->data]==0){
viz[p->data]=1;
dfs(viz,p->data,graf);
}
p=p->next;
}
return 0;
}
int main(){
int noduri,muchii,i,j,y,x,nr=0,viz[100];
citire>>noduri>>muchii;
nod *graf[100],*nou,*copie;
for(i = 1;i <= noduri; i++)
{
graf[i]=new nod;
graf[i]->next=NULL;
}
for(i = 1 ;i <= muchii ;i++){
citire>>x>>y;
nou=new nod;
nou->data=y;
nou->next=graf[x]->next;
graf[x]->next=nou;
}
for(i = 1; i <= noduri; i++)
if(graf[i]->next!=NULL){
cout<<i<<":";
copie=graf[i]->next;
while(copie!=NULL){
cout<<copie->data<<",";
copie=copie->next;
}
cout<<endl;
}
for(i = 1; i <= noduri; i++)
viz[i]=0;
for(i = 1; i <= noduri; i++)
if(viz[i]==0){
nr++;
dfs(viz,i,graf);
}
afisare<<nr;
}