Pagini recente » Cod sursa (job #2459147) | Cod sursa (job #1935319) | Cod sursa (job #3280072) | Cod sursa (job #1052020) | Cod sursa (job #591475)
Cod sursa(job #591475)
#include<cstdio>
#include<vector>
#include<deque>
using namespace std;
vector<int> g[100002];
deque<int> d;
int n, m;
bool parc[100002];
int avanseaza(int poz) {
int i;
for(i = poz; i <= n && parc[i]; ++i);
return i;
}
void dfs(int s) {
int k, i;
d.push_back(s);
parc[s] = 1;
while(!d.empty()) {
k = d[0];
for(i = 0; i < g[k].size(); ++i)
if(!parc[g[k][i]]) {
parc[g[k][i]] = 1;
d.push_back(g[k][i]);
}
d.pop_front();
}
}
int main() {
int i, x, y, pasi = 0, poz = 1;
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 1; i <= m; ++i) {
scanf("%d%d", &x, &y);
g[x].push_back(y);
g[y].push_back(x);
}
while(1) {
poz = avanseaza(poz);
if(poz > n) break;
++pasi;
dfs(poz);
}
printf("%d\n", pasi);
return 0;
}