Pagini recente » Cod sursa (job #1695) | Cod sursa (job #2551837) | Cod sursa (job #1671508) | Cod sursa (job #965246) | Cod sursa (job #2259414)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("dfs.in");
ofstream g("dfs.out");
deque <int> q;
int n,m;
int v[2][200001];
bool a[100001];
int main()
{
int x,i,numar=0,start=2;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>v[1][i]>>v[2][i];
}
q.push_back(v[1][1]);
q.push_back(v[2][1]);
v[1][1]=v[2][1]=true;
a[v[1][1]]=a[v[2][1]];
while(!q.empty())
{
x=q.front();
for(i=start;i<=m;i++)
{
if(v[1][i]==x)
{
if(a[v[2][i]]==false)
{q.push_back(v[2][i]);
a[v[2][i]]=true;}
v[1][i]=v[2][i]=0;
}
else
if(v[2][i]==x)
{
if(a[v[1][i]]==false)
{
a[v[1][i]]=true;
q.push_back(v[1][i]);
}
v[1][i]=v[2][i]=0;
}
}
q.pop_front();
if(q.empty())
{
numar++;
i=1;
while(v[1][i]==0&&i<=m)
i++;
if(i<=m)
{
q.push_back(v[1][i]);
q.push_back(v[2][i]);
v[1][i]=v[2][i]=0;start=i+1;
}
}
}
g<<numar;
return 0;
}