Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2041794) | Cod sursa (job #1803360) | Cod sursa (job #823813) | Cod sursa (job #1245575)
#include<fstream>
#include <vector>
#include <iostream>
using namespace std;
int n,m,nr=0;
vector<int> noduri[100001];
bool vizitat[100001];
void adancime(int p)
{
//cout<<p<<" ";
vizitat[p] = true;
for (int i = 0; i < noduri[p].size(); i++) {
if (!vizitat[noduri[p][i]]) {
adancime(noduri[p][i]);
}
}
}
int main()
{
bool gasit=1;
ifstream d1("dfs.in");
ofstream d2("dfs.out");
d1>>n>>m;
for (int i=1;i<=n;i++)
{
vizitat[i] = false;
int m1, m2;
d1>>m1>>m2;
noduri[m1].push_back(m2);
noduri[m2].push_back(m1);
}
while(gasit)
{
int p;
gasit=0;
for (int i=1;i<=n;i++)
if (vizitat[i]==0)
{
gasit=1;
p=i;
break;
}
adancime(p);
//cout<<"\n";
if (gasit) nr++;
}
d2<<nr;
return 0;
}