Pagini recente » Cod sursa (job #1122730) | Cod sursa (job #944096) | Cod sursa (job #1802669) | Cod sursa (job #1545824) | Cod sursa (job #870748)
Cod sursa(job #870748)
#include <stdio.h>
#include <queue>
#include <vector>
using namespace std;
//Constante
const int sz = (int)1e5 + 1;
//Variabile
FILE *in, *out;
int nodes, edges, source;
int dist[sz];
vector<int> graph[sz];
queue<int> myQ;
int main()
{
in=fopen("bfs.in","rt");
out=fopen("bfs.out","wt");
fscanf(in, "%d%d%d",&nodes, &edges, &source);
for(int i=1;i<=edges;i++)
{
int vFrom, vTo;
fscanf(in, "%d%d",&vFrom, &vTo);
graph[vFrom].push_back(vTo);
}
myQ.push(source);
dist[source] = 1;
while(!myQ.empty())
{
int node = myQ.front();
myQ.pop();
vector <int>:: iterator it, end = graph[node].end();
for(it = graph[node].begin(); it!=end; ++it)
{
if(!dist[*it])
{
dist[*it] = dist[node] + 1;
myQ.push(*it);
}
}
}
for(int i=1; i<=nodes; ++i)
fprintf(out,"%d ", dist[i] - 1);
fclose(in);
fclose(out);
return 0;
}