Pagini recente » Cod sursa (job #2497460) | Cod sursa (job #572336) | Cod sursa (job #731381) | Cod sursa (job #2067404) | Cod sursa (job #1125683)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("dfs.in"); ofstream g("dfs.out");
vector <int> v[100002];
int n,m,viz[100002],ct,nr;
void citire(){
int x,y,i;
f>>n>>m;
for (i=1;i<=m;i++){
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
}
void concat_comp(int x,int y){
int i;
for (i=1;i<=n;i++) if (viz[i]==y) viz[i]=x;
}
void dfs(int i){
int k;
//g<<v[i].size()<<'\n';
for (k=0;k<v[i].size();k++)
if (!viz[v[i][k]]) {
viz[v[i][k]]=ct;
dfs(v[i][k]);
}
else {
concat_comp(viz[i],viz[v[i][k]]);
// nr--;
}
}
int main(){
citire();
ct=1;
for (int i=1;i<=n;i++) if (!viz[i]) { viz[i]=ct; nr++; dfs(i); ct++; }
g<<nr;
}