Pagini recente » Monitorul de evaluare | Cod sursa (job #2079376) | Cod sursa (job #111543) | Cod sursa (job #361656) | Cod sursa (job #345092)
Cod sursa(job #345092)
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
vector<int> list[100001];
int viz[100001];
int nr;
void dfs(int start)
{
stack<int> s;
s.push(start);
viz[start] = 1;
while(!s.empty())
{
int crt = s.top();
s.pop();
for(int i=0;i<list[crt].size();++i)
if(!viz[list[crt][i]])
{
viz[list[crt][i]] = 1;
s.push(list[crt][i]);
}
}
}
int main()
{
ifstream f("dfs.in");
ofstream f2("dfs.out");
int n,m;
f>>n>>m;
int x,y;
while(f>>x>>y)
{
list[x-1].push_back(y-1);
list[y-1].push_back(x-1);
}
for(int i=0; i<n; ++i)
{
if(!viz[i])
{
dfs(i);
++nr;
}
}
f2<<nr;
return 0;
}