# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
101413 | jamielim | 007 (CEOI14_007) | C++14 | 440 ms | 15728 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
scanf("%d%d",&n,&m);
int s,d,a,b;
scanf("%d%d%d%d",&s,&d,&a,&b); s--; d--; a--; b--;
vector<int> adj[n];
int u,v;
for(int i=0;i<m;i++){
scanf("%d%d",&u,&v); u--; v--;
adj[u].push_back(v);
adj[v].push_back(u);
}
int dist[2][n];
for(int i=0;i<n;i++)dist[0][i]=dist[1][i]=1000000010;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > pq;
pq.push(make_pair(0,a)); dist[0][a]=0;
while(!pq.empty()){
pair<int,int> cur=pq.top();pq.pop();
for(int i=0;i<(int)adj[cur.second].size();i++){
if(dist[0][adj[cur.second][i]]>dist[0][cur.second]+1){
dist[0][adj[cur.second][i]]=dist[0][cur.second]+1;
pq.push(make_pair(dist[0][adj[cur.second][i]],adj[cur.second][i]));
}
}
}
pq.push(make_pair(0,b)); dist[1][b]=0;
while(!pq.empty()){
pair<int,int> cur=pq.top();pq.pop();
for(int i=0;i<(int)adj[cur.second].size();i++){
if(dist[1][adj[cur.second][i]]>dist[1][cur.second]+1){
dist[1][adj[cur.second][i]]=dist[1][cur.second]+1;
pq.push(make_pair(dist[1][adj[cur.second][i]],adj[cur.second][i]));
}
}
}
printf("%d",max(-1,min(dist[0][d]-dist[0][s],dist[1][d]-dist[1][s])));
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |