Pagini recente » Cod sursa (job #494234) | Cod sursa (job #870272) | Cod sursa (job #2738610) | Cod sursa (job #541399) | Cod sursa (job #894354)
Cod sursa(job #894354)
#include <stdio.h>
#include <vector>
using namespace std;
#define max 100001
vector <int> vec[max];
int coada[max], cost[max];
void BFS(int nod, int n)
{
unsigned int i,j,k;
k=1;
cost[nod]=0;
coada[k]=nod;
for (i=1;i<=k;i++)
for (j=0;j<vec[coada[i]].size();j++)
if (cost[vec[coada[i]][j]] == -1)
{
k=k+1;
coada[k] = vec[coada[i]][j];
cost[coada[k]] = cost[coada[i]] + 1;
}
}
int main()
{
int i,a,b,s,m,n;
FILE *f,*g;
f=fopen ("bfs.in", "rt");
g=fopen ("bfs.out", "wt");
fscanf (f,"%d %d %d", &n, &m, &s);
for (i=1;i<=m;i++)
{
fscanf (f,"%d %d", &a, &b);
vec[a].push_back(b);
vec[b].push_back(a);
}
for (i=1;i<=n;i++)
cost[i]=-1;
for (i=s;i<=n;i++)
{
if (cost[i]==-1)
{
BFS(s,n);
}
}
for (i=1;i<=n;i++)
fprintf (g, "%d ", cost[i]);
fclose(f);
fclose(g);
return 0;
}