Submission #403465

#TimeUsernameProblemLanguageResultExecution timeMemory
403465WasrekSwapping Cities (APIO20_swap)C++14
13 / 100
156 ms13020 KiB
#include<bits/stdc++.h> #include "swap.h" // #include"grader.cpp" #include <vector> #define SIZE 100010 #define MAX 2000000000 using namespace std; struct A{ int u,w; }; int n,sub2=1,sub1=1,cycle=1,ma=0; A m1={MAX,MAX},m2={MAX,MAX},m3={MAX,MAX}; vector<A> g[SIZE]; void init(int N, int M, std::vector<int> U, std::vector<int> V, std::vector<int> W) { n=N; for(int i=0;i<M;i++){ g[U[i]].push_back({V[i],W[i]}); g[V[i]].push_back({U[i],W[i]}); if(W[i]>ma) ma=W[i]; if(U[i]!=0) sub2=0; if(!sub2) continue; if(W[i]<m1.w){ m3=m2,m2=m1,m1={V[i],W[i]}; }else if(W[i]<m2.w){ m3=m2,m2={V[i],W[i]}; }else if(W[i]<m3.w){ m3={V[i],W[i]}; } } if(sub1){ for(int i=0;i<N;i++){ if(g[i].size()>2) sub1=0; if(g[i].size()<2) cycle=0; } } // printf("%d %d\n%d %d\n%d %d\n",m1.u,m1.w,m2.u,m2.w,m3.u,m3.w); return ; } int subtask2(int X,int Y){ if(n<=3) return -1; if(X!=0 && Y!=0){ if(X!=m1.u && Y!=m1.u){ return max(g[X][0].w,max(g[Y][0].w,m1.w)); }else if(X!=m2.u && Y!=m2.u){ return max(g[X][0].w,max(g[Y][0].w,m2.w)); }else if(X!=m3.u && Y!=m3.u){ return max(g[X][0].w,max(g[Y][0].w,m3.w)); } }else{ if(Y==0) swap(X,Y); //X==0 if(Y==m1.u || Y==m2.u || Y==m3.u){ return m3.w; }else{ return max(g[Y][0].w,m2.w); } } } int subtask1(int X,int Y){ if(cycle) return ma; else return -1; } int getMinimumFuelCapacity(int X, int Y) { //min path ที่มี node อยู่ระหว่าง path //หา min ถนนที่เชื่อมกับโหนดตรงกลาง //เทียบ min กับ path อื่นๆ ไปได้ (เชื่อมตรงเลยก็ได้) if(sub2) return subtask2(X,Y); else if(sub1) return subtask1(X,Y); return 0; }

Compilation message (stderr)

swap.cpp: In function 'int subtask2(int, int)':
swap.cpp:60:1: warning: control reaches end of non-void function [-Wreturn-type]
   60 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...