Submission #522679

#TimeUsernameProblemLanguageResultExecution timeMemory
522679lucriSightseeing (NOI14_sightseeing)C++17
4 / 25
1363 ms145744 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; long long n,m,q,x,y,c,ans[500010],t[500010]; vector<pair<long long,pair<long long,long long>>>a; vector<vector<int>>f; bool ok[500010]; int tata(int x) { if(x==t[x]) return t[x]; t[x]=tata(t[x]); return t[x]; } void atribuire(int nod) { ans[nod]=ans[1]; for(auto z:f[nod]) { if(ok[z]==false) { ok[z]=true; atribuire(z); } } return; } void combinare(int x,int y,int c) { if(tata(x)==1&&tata(y)!=1) { f[1].push_back(t[y]); t[t[y]]=1; ans[1]=c; if(t[y]!=1) atribuire(t[y]); else atribuire(y); return; } swap(x,y); if(tata(x)==1&&tata(y)!=1) { f[1].push_back(t[y]); t[t[y]]=1; ans[1]=c; if(t[y]!=1) atribuire(t[y]); else atribuire(y); return; } if(tata(x)!=tata(y)) { t[x]=t[y]; f[t[x]].push_back(x); } return; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>q; a.resize(n+5); f.resize(n+5); for(long long i=1;i<=m;++i) { cin>>x>>y>>c; a.push_back(make_pair(-c,make_pair(x,y))); } for(int i=1;i<=n;++i) t[i]=i; sort(a.begin(),a.end()); for(int i=0;i<m;++i) { combinare(a[i].second.first,a[i].second.second,-a[i].first); } for(long long i=1;i<=q;++i) { cin>>x; cout<<ans[x]<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...