Pagini recente » Cod sursa (job #2675255) | Borderou de evaluare (job #2478889) | Cod sursa (job #899373) | Cod sursa (job #402082) | Cod sursa (job #315207)
Cod sursa(job #315207)
#include<cstdio>
using namespace std;
struct graf
{
int a;
graf *next;
};
graf *x[100010],*ult[100010];
int c[100010],viz[100010],cost[100010];
int main()
{
int n,m,s,i,u,y;
graf *p;
FILE *f=fopen("bfs.in","r");
FILE *g=fopen("bfs.out","w");
fscanf(f,"%d %d %d ",&n,&m,&s);
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d ",&u,&y);
if (x[u]==NULL)
{
p=new graf;
p->next=NULL;
p->a=y;
ult[u]=p;
x[u]=p;
}
else
{
p=new graf;
p->a=y;
ult[u]->next=p;
p->next=NULL;
ult[u]=p;
}
}
c[1]=s;
i=1;
cost[s]=0;
viz[s]=1;
u=1;
p=new graf;
p=x[s];
while (i<=u)
{
while (p)
{
if (viz[p->a]==0)
{
u++;
c[u]=p->a;
viz[p->a]=1;
cost[p->a]=cost[c[i]]+1;
}
p=p->next;
}
i++;
p=x[c[i]];
}
for (i=1;i<=n;i++)
if(viz[i]==0)
fprintf(g,"%d ",-1);
else fprintf(g,"%d ",cost[i]);
fclose(f);
fclose(g);
return 0;
}