Pagini recente » Cod sursa (job #1977928) | Monitorul de evaluare | Cod sursa (job #1864746) | Cod sursa (job #2650938) | Cod sursa (job #1442857)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
void bfs(vector< vector<int> > v, vector<int>& viz, int nod)
{
viz[nod] = 1;
for (int i = 0; i < (int)v[nod].size(); i++)
if (viz[v[nod][i]] != 1)
bfs(v, viz, v[nod][i]);
}
int main()
{
int n, m, i,y,t, j, nod1, nod2, k = -1,s;
ifstream f("bfs.in");
f >> n >> m>>s;
vector< vector<int> > v(n + 1);
vector<int>viz(n + 1, 0);
for (i = 0; i < m; i++)
{
f >> nod1 >> nod2;
v[nod1].insert(v[nod1].begin(), nod2);
}
ofstream g("bfs.out");
for (i = 1; i <= n; i++)
{
if (!v[i].size())
v[i].insert(v[i].begin(), 0);
for (j = 0; j < (int)v[i].size(); j++)
{
if (!viz[v[i][j]]&&v[i][j]!=s)
{
k++;
bfs(v, viz, v[i][j]);
}
}
g << k << " ";
k = -1;
for (y = 1; y <= n; y++)
for (t = 0; t < (int)v[y].size(); t++)
viz[v[y][t]] = 0;
}
f.close();
g.close();
return 0;
}