제출 #101421

#제출 시각아이디문제언어결과실행 시간메모리
101421rocketninja7007 (CEOI14_007)C++14
100 / 100
499 ms17768 KiB
#include <cstdio> #include <vector> #include <queue> #include <algorithm> using namespace std; int main(){ int N, M, s, d, a, b; scanf("%d%d%d%d%d%d", &N, &M, &s, &d, &a, &b); vector<int> adjList[N+1]; for(int i=0;i<M;i++){ int u, v; scanf("%d%d", &u, &v); adjList[u].push_back(v); adjList[v].push_back(u); } queue<int> proc; proc.push(s); int dists[N+1]; for(int i=1;i<N+1;i++){ dists[i]=-1; } dists[s]=0; while(!proc.empty()){ int node=proc.front(); proc.pop(); for(int i=0;i<adjList[node].size();i++){ if(dists[adjList[node][i]]==-1){ dists[adjList[node][i]]=dists[node]+1; proc.push(adjList[node][i]); } } } proc.push(d); int distd[N+1]; for(int i=1;i<N+1;i++){ distd[i]=-1; } distd[d]=0; while(!proc.empty()){ int node=proc.front(); proc.pop(); for(int i=0;i<adjList[node].size();i++){ if(distd[adjList[node][i]]==-1){ distd[adjList[node][i]]=distd[node]+1; proc.push(adjList[node][i]); } } } proc.push(a); int dista[N+1]; for(int i=1;i<N+1;i++){ dista[i]=-1; } dista[a]=0; while(!proc.empty()){ int node=proc.front(); proc.pop(); for(int i=0;i<adjList[node].size();i++){ if(dista[adjList[node][i]]==-1){ dista[adjList[node][i]]=dista[node]+1; proc.push(adjList[node][i]); } } } proc.push(b); int distb[N+1]; for(int i=1;i<N+1;i++){ distb[i]=-1; } distb[b]=0; while(!proc.empty()){ int node=proc.front(); proc.pop(); for(int i=0;i<adjList[node].size();i++){ if(distb[adjList[node][i]]==-1){ distb[adjList[node][i]]=distb[node]+1; proc.push(adjList[node][i]); } } } int temps=N, tempd=N; if(dists[a]==dists[b]&&distd[a]==distd[b]){ for(int i=1;i<N+1;i++){ if(dista[i]==distb[i]){ if(dists[i]+dista[i]==dists[a]){ temps=min(temps, dista[i]); } if(distd[i]+dista[i]==distd[a]){ tempd=min(tempd, dista[i]); } } } } printf("%d", max(min(distd[a]-dists[a], distd[b]-dists[b]), -1)+(temps>tempd?-1:0)); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

007.cpp: In function 'int main()':
007.cpp:26:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<adjList[node].size();i++){
                     ~^~~~~~~~~~~~~~~~~~~~~
007.cpp:42:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<adjList[node].size();i++){
                     ~^~~~~~~~~~~~~~~~~~~~~
007.cpp:58:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<adjList[node].size();i++){
                     ~^~~~~~~~~~~~~~~~~~~~~
007.cpp:74:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<adjList[node].size();i++){
                     ~^~~~~~~~~~~~~~~~~~~~~
007.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d%d%d%d", &N, &M, &s, &d, &a, &b);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
007.cpp:12:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &u, &v);
         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...