Cod sursa(job #2324204)

Utilizator hadi.diabDiab Hadi hadi.diab Data 20 ianuarie 2019 13:33:01
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
#include <iostream>
#include <fstream>
int n, m, parcurs[999999], nr;
using namespace std;
typedef struct nod
{
	int v;
	nod *c;
} *noduri;

noduri a[999999];

noduri creareNod(noduri r,int t){
   noduri a=new nod;
   a->c=r;
   a->v=t;
   return a;
}
void verificare(int nrNod){
    noduri k;
    parcurs[nrNod]=1;
    k=a[nrNod];
    while(k!=NULL){
        if(parcurs[k->v]==0){
            verificare(k->v);
        }
        else{
            k=k->c;
        }

    }
}
int main()
{
	int n,m,i,x,y;
	ifstream f;
    ofstream o;
    f.open("dfs.in");
    o.open("dfs.out");
    f>>n>>m;
	for (i = 1; i <= m; i++){
		f>>x>>y;

		a[x]=creareNod(a[x],y);
		a[y]=creareNod(a[y],x);
	}
    for(i=1;i<=n;i++){
        if(parcurs[i]==0){

            nr++;
            verificare(i);
        }
    }

    o<<nr;
	f.close();
    o.close();
	return 0;
}