Pagini recente » Cod sursa (job #1387251) | Cod sursa (job #1837306) | Diferente pentru problema/chat intre reviziile 10 si 6 | Cod sursa (job #2358568) | Cod sursa (job #3339605)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("numarare.in");
ofstream g("numarare.out");
vector <int> b[100100];
queue <int> q;
int start,n,m,xx,y,x,nr,pred[100101],z,i,j;
void afis(int q, int nr)
{
if(pred[q]!=-1)
{
nr++;
afis(pred[q],nr);
}
else
{
g<<nr<<" ";
}
}
void bf(int start)
{
q.push(start);
pred[start]=-1;
while(!q.empty())
{
x=q.front();
z=b[x].size();
for(i=0;i<z;i++)
{
if(pred[b[x][i]]==0 )
{
q.push(b[x][i]);
pred[b[x][i]]=x;
}
}
q.pop();
}
}
int main()
{
f>>n>>m>>xx;
for(i=1;i<=m;i++)
{
f>>x>>y;
if(x!=y)
{
b[x].push_back(y);
}
}
for(i=1;i<=n;i++)
{
sort(b[i].begin(),b[i].end());
}
bf(xx);
for(i=1;i<=n;i++)
{nr=0;
if(pred[i]!=0)
afis(i,nr);
else
{
g<<"-1 ";
}
}
return 0;
}