Submission #330654

#TimeUsernameProblemLanguageResultExecution timeMemory
330654egasSwapping Cities (APIO20_swap)C++14
13 / 100
1212 ms42868 KiB
#include <bits/stdc++.h> using namespace std; map<int,set<int>> adj; multiset<int> ms; map<pair<int,int>,int> edwt; int SUBTASK1=0; bool isCyc=0; bool isSubtask1=true; bool isCycle(){ for(auto x:adj){ if(x.second.size()<=1)return false; if(x.second.size()>2)isSubtask1=false; } return true; } void init(int N, int M,std::vector<int> U, std::vector<int> V, std::vector<int> W) { for(int i=0;i<M;i++){ int x=U[i]; int y=V[i]; int z=W[i]; ms.insert(z); edwt[{min(x,y),max(x,y)}]=z; SUBTASK1=max(SUBTASK1,(W[i])); adj[x].insert(y); adj[y].insert(x); } isCyc=isCycle(); } int getMinimumFuelCapacity(int X, int Y) { if(isSubtask1){ if(isCyc){ return SUBTASK1; }else return -1; }else{ if(ms.size()<=2){ return -1; } if(X==0){ int two = edwt[{0,Y}]; int res=two; ms.erase(ms.find(two)); auto temp = ms.begin(); res=max(res,(*temp)); temp++; res=max(res,(*temp)); ms.insert(two); return res; } int one = edwt[{0,X}]; int two = edwt[{0,Y}]; int res=max(one,two); ms.erase(ms.find(one)); ms.erase(ms.find(two)); if(ms.size()>0) res=max(res,(*ms.begin())); ms.insert(one); ms.insert(two); return res; } }
#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...