Pagini recente » Cod sursa (job #3258070) | Cod sursa (job #3289492) | Cod sursa (job #631137) | Cod sursa (job #417191) | Cod sursa (job #1823081)
#include <iostream>
#include <fstream>
#include <queue>
#define N 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue<int> coada;
int i,j,n,m,k,freq[N],el,viz[N];
int** a;
void bfs(int x)
{
viz[x]=1;
coada.push(x);
while(!coada.empty())
{
el=coada.front();
coada.pop();
for(i=1;i<=n;i++)
if(a[el][i]==1 && viz[i]==0)
{
freq[i]++;
viz[i]=1;
coada.push(i);
}
else
if(el==x && a[el][i]==0)
{
freq[i]++;
}
}
}
int main()
{
int x1,y1;
f>>n>>m>>k;
a=new int*[n+5];
for(i=1;i<=n;i++)
{
a[i]=new int[n+5];
}
for(i=1;i<=m;i++)
{
f>>x1>>y1;
a[x1][y1]=1;
}
bfs(k);
freq[k]=0;
for(i=1;i<=n;i++)
{
if(viz[i]==0)
g<<-1<<" ";
else
g<<freq[i]<<" ";
}
}