Pagini recente »
Cod sursă (job #816371)
|
Borderou de evaluare (job #520067)
|
Profil crina2120
|
2015-01-17-olimpiada-scoala-5
|
Cod sursă (job #466148)
Cod sursă (job
#466148)
#include<bits/stdc++.h>
#define N 500010
#define x first
#define y second
#define pii pair<int,int>
using namespace std;
int n,m,X;
int viz[N];
vector<int>V[N];
int rs[N];
int p[N];
queue<int>Q;
const int inf=1e9;
void BFS(int x) {
viz[x]=1;
Q.push(x);
while (Q.size()) {
x=Q.front();
Q.pop();
for (int i=0; i<V[x].size(); i++) {
int y=V[x][i], v;
if (p[x]==y) v=viz[x];
else v=viz[x]+1;
if (viz[y]>v) {
viz[y]=v;
Q.push(y);
}
}
}
}
int main() {
ifstream cin("evacuare.in");
ofstream cout("evacuare.out");
cin>>n>>m>>X;
for (int i=1; i<=m; i++) {
int x,y; cin>>x>>y;
V[x].push_back(y);
V[y].push_back(x);
}
for (int i=1; i<=n; i++) cin>>p[i], viz[i]=inf;
BFS(X);
for (int i=1; i<=n; i++) cout<<viz[i]-1<<'\n';
return 0;
}