Cod sursa(job #558482)

Utilizator fgravilaGravila Felix fgravila Data 17 martie 2011 12:02:19
Problema Parcurgere DFS - componente conexe Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<iostream>
using namespace std;

int n,m,s[200001];

typedef struct nod{
	int x,y;
	nod*urm;
};

nod*start=0;

void afis(){
	int i;
	for(i=1;i<=n;i++)
		cout<<s[i]<<" ";
	cout<<endl;
}

void citire(){
	ifstream in("dfs.in");
	in>>n>>m;
	int i,x,y;
	for(i=1;i<=m;i++){
		nod*p=new nod;
		in>>x>>y;
		p->x=x;
		p->y=y;
		p->urm=start;
		start=p;
	}
}

void df(int x){
	s[x]=1;
	afis();
	nod *p;
	for(p=start;p;p=p->urm)
		if(p->x==x and s[p->y]==0)
			df(p->y);
		else if(p->y==x and s[p->x]==0)
			df(p->x);
}
	
int main(){
	citire();
	int nr=0;
	int i;
	for(i=1;i<=n;i++)s[i]=0;
	for(i=1;i<=n;i++)
		if(s[i]==0){
			nr++;
			df(i);
		}
	ofstream out("dfs.out");
	out<<nr;
	out.close();
	return 0;
}