Cod sursa(job #928799)

Utilizator Pcosmin93Posteuca Cosmin Pcosmin93 Data 26 martie 2013 18:22:02
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#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;
}