Pagini recente » Cod sursa (job #2975319) | Cod sursa (job #1570110) | Cod sursa (job #1603136) | Cod sursa (job #2320757) | Cod sursa (job #1869496)
#include<fstream>
using namespace std;
ifstream cin("dfs.in");
ofstream cout("dfs.out");
struct nod{
int val;
nod *next;
};
bool viz[100005];
int n, m;
nod *l[100005];
void add(int x, int y){
nod *r, *w;
r = new nod; r->val=x; r->next = NULL;
w = new nod; w->val=y; w->next = NULL;
if(!l[y]) l[y]=r;
else{ r->next = l[y]; l[y]=r;}
if(!l[x]) l[x]=w;
else{ w->next = l[x]; l[x]=w;}
}
void dfs(int i){
if(!viz[i]) viz[i]=1;
while(l[i]!=NULL){
nod *r; r = l[i]; l[i]=l[i]->next; if(!viz[r->val]) viz[r->val]=1;
dfs(r->val);
}}
int main(){
cin>>n>>m;
while(m--){
int x, y;
cin>>x>>y;
add(x, y); }
int comp=0;
for (int i=1; i<=n; ++i){
if(viz[i]==0){
++comp;
dfs(i);
}
}
cout<<comp;
return 0;
}