Pagini recente » Cod sursa (job #1593236) | Cod sursa (job #1396863) | Cod sursa (job #2081438) | Cod sursa (job #3240163) | Cod sursa (job #3272030)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 100000
vector<int> adj[Nmax];
queue<int> q;
bool used[Nmax];
int dist[Nmax];
int main()
{
int n, m, s, i, u, v;
ifstream fin ( "bfs.in" );
ofstream fout ( "bfs.out" );
fin >> n >> m >> s;
q.push( s );
dist[s] = 0;
used[s] = true;
for( i = 0; i < m; i ++ ) {
fin >> u >> v;
adj[u].push_back( v );
}
fin.close();
while ( !q.empty() ) {
u = q.top();
for ( i = 0; i < adj[u].size(); i ++ )
if ( !used[ adj[u][i] ] ) {
dist[ adj[u][i] ] = dist[u] + 1;
used[ adj[u][i] ] = true;
q.push( adj[u][i] );
}
q.pop();
}
for ( i = 1; i <= n; i ++ ) {
if ( i == s )
fout << 0 << " "; else if ( dist[i] == 0 ) {
fout << -1 << " ";
} else {
fout << dist[i] << " ";
}
}
fout.close();
return 0;
}