Pagini recente » Borderou de evaluare (job #3283721) | Cod sursa (job #2631199) | Cod sursa (job #905529) | Cod sursa (job #1965209) | Cod sursa (job #3272622)
#include <fstream>
using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
int n,nrc=0,viz[501101],m,t[2][501101],start[501001],i,j,k=0;
void DF(int x)
{
int p;
p=start[x];
viz[x]=nrc;
while (p)
{
if(viz[t[0][p]]==0)
DF(t[0][p]);
p=t[1][p];
}
}
int main()
{
in>>n>>m;
for(int y=1;y<=m;y++)
{
in>>i>>j;
k++;
t[0][k]=j;
t[1][k]=start[i];
start[i]=k;
k++;
t[0][k]=i;
t[1][k]=start[j];
start[j]=k;
}
for(int y=1;y<=n;y++)
{
if(viz[y]==0)
{
nrc++;
DF(y);
}
}
out<<nrc<<'\n';
return 0;
}