Mai intai trebuie sa te autentifici.
Cod sursa(job #1661469)
| Utilizator | Data | 23 martie 2016 21:35:25 | |
|---|---|---|---|
| Problema | BFS - Parcurgere in latime | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.86 kb |
#include <iostream>
#include <fstream>
#include <vector>
#include<algorithm>
#include <set>
using namespace std;
vector <int> G[100005];
int n,m,S;
const int INF = 1e8;
ifstream f("bfs.in");
ofstream g("bfs.out");
void bfs()
{
vector <int> dist(n+1,INF);
set <pair<int,int>> c;
c.insert({0,S});
dist[S]=0;
while(!c.empty())
{
int u = c.begin() -> second;
c.erase(c.begin());
for(auto p:G[u])
if(dist[p]>dist[u]+1)
{
c.erase({dist[p],p});
dist[p]=dist[u]+1;
c.insert({dist[p],p});
}
}
for(int i=1;i<=n;i++)
if(dist[i]==INF)
g<<"-1 ";
else
g<<dist[i]<<" ";
}
int main()
{
f>>n>>m>>S;
for(int i=0;i<m;i++)
{
int a,b;
f>>a>>b;
G[a].push_back(b);
}
bfs();
}
