Pagini recente » Cod sursa (job #40340) | Cod sursa (job #11574) | Cod sursa (job #2080382) | Cod sursa (job #3222932) | Cod sursa (job #363776)
Cod sursa(job #363776)
#include<fstream>
#include<iostream>
#include<queue>
using namespace std;
struct node{
int vec;
node* next;
};
node* vec[100000];
int n,m,st;
int main()
{
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
scanf("%d %d %d",&n,&m,&st);
st--;
memset(vec,0,sizeof(vec));
int viz[100000];
memset(viz,0,sizeof(viz));
for(int i=0; i<m; i++)
{
int x,y;
scanf("%d %d",&x,&y);
x--; y--;
node* nod = new node;
nod->vec = y;
nod->next = vec[x];
vec[x] = nod;
nod = new node;
nod->vec = x;
nod->next = vec[y];
vec[y] = nod;
}
int rez[100000],nr = 0;
for(int i=0; i<n ;i++) rez[i] = -1;
queue<int> q;
for(int i=0; i<n; i++)
if( rez[i] == -1 )
{
nr++;
q.push(i);
rez[i] = 0;
while( q.size() )
{
int next = q.front();
q.pop();
node* p = vec[next];
while( p ){
if( rez[p->vec] == -1 )
{
rez[p->vec] = 0;
q.push(p->vec);
}
p = p->next;
}
}
}
printf("%d\n",nr);
return 0;
}