Pagini recente » Borderou de evaluare (job #318492) | Borderou de evaluare (job #1392559) | Borderou de evaluare (job #2818821) | Statistici Mihai Mark Daniel (markmihai) | Cod sursa (job #2425242)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
struct nod{
int nr, ordin, vizitat;
vector <int> legaturi;
};
vector<nod> noduri;
int parcurge(int i, int n)
{
int j, total = 1;
if (noduri[i].vizitat == 1)
return 0;
noduri[i].vizitat = 1;
for (j = 0; j < noduri[i].legaturi.size(); j++)
if (noduri[noduri[i].legaturi[j] - 1].vizitat == 0)
total+= parcurge(noduri[i].legaturi[j] - 1, n);
return total;
}
int main()
{
int n, m, i, a, b;
f>>n>>m;
for (i = 0; i < n; i++)
{
nod nou;
nou.nr = i + 1;
nou.ordin = 0;
nou.vizitat = 0;
noduri.push_back(nou);
}
for (i = 0; i < m; i++)
{
f>>a>>b;
//noduri[b-1].ordin++;
noduri[b-1].legaturi.push_back(a);
noduri[a-1].legaturi.push_back(b);
}
int con = 0;
for(i = 0; i < n; i++)
if (parcurge(i, n) > 0)
con++;
g<<con;
return 0;
}