# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
101413 | jamielim | 007 (CEOI14_007) | C++14 | 440 ms | 15728 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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])));
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |