Pagini recente » Cod sursa (job #1778404) | Cod sursa (job #1845936) | Cod sursa (job #1823832) | Cod sursa (job #2456411) | Cod sursa (job #1338487)
#include <fstream>
using namespace std;
int n,m,s,a[10010][10010],q[100010],viz[100010];
void citire(ifstream& f)
{
int i,x,y;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
a[x][y]=1;
}
}
void BF(int y)
{int p,u,v,i;
p=u=0;
viz[s]=-1;
q[p]=s;
while(p<=u&&!viz[y])
{
v=q[p++];
for(i=1;i<=n;i++)
if(a[v][i]&&!viz[i])
{
q[++u]=i;
viz[i]=v;
}
}
}
void Afisare_Drum_Minim(int y,ofstream& g)
{
int poz=0,drum[100010],i;
drum[0]=y;
if(!viz[y])
g<<-1<<" ";
else
{
while(viz[drum[poz]]!=-1)
drum[++poz]=viz[drum[poz-1]];
g<<poz<<" ";
}
}
int main()
{int y,i;
ifstream f("bfs.in");
ofstream g("bfs.out");
citire(f);
for(y=1;y<=n;y++)
{
for(i=1;i<=n;i++)
viz[i]=0;
BF(y);
Afisare_Drum_Minim(y,g);
}
f.close();
g.close();
return 0;
}