Pagini recente » Borderou de evaluare (job #3328608) | Cod sursa (job #2425382) | Borderou de evaluare (job #2423780) | Borderou de evaluare (job #2425565) | Cod sursa (job #2425241)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("dfs.in");
ofstream g("dfs.out");
struct nod{
int nr, ordin, vizitat;
vector <int> legaturi;
};
int parcurge(int i, int n, vector<nod> noduri)
{
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, noduri);
return total;
}
int main()
{
vector<nod> noduri;
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 < m; i++)
if (parcurge(i, n, noduri) > 0)
con++;
g<<con;
return 0;
}