Submission #1312670

#TimeUsernameProblemLanguageResultExecution timeMemory
1312670kevin264꿈 (IOI13_dreaming)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define sz(x) (int)(x.size()) #define ff first #define ss second #define m_p make_pair #define INF INT_MAX #define OO LLONG_MAX using vi=vector<int>; using vvi=vector<vi>; using pii=pair<int,int>; using vvpii = vector<vector<pii > >; template<typename T> using inverse_pq = priority_queue<T,vector<T>, greater<T> >; template<typename T=int> void cin_vector(vector<T> &v) {for(int& i : v) cin>>i;} pair<int,vi> djikstra(int n, int start, vector<vector<pii> >& g){ inverse_pq<pii> pq; vi dist(n+1, INF); pii ans={-1,-1}; pq.push({0,start}); dist[start]=0; while(!pq.empty()){ int w=pq.top().ff,top=pq.top().ss; pq.pop(); if(w>dist[top]) continue; if(ans.ss<w) ans={top,w}; for(auto i :g[top]){ int d=i.ss+w; if(dist[i.ff]>d){ dist[i.ff]=d; pq.push({d,i.ff}); } } } return m_p(ans.ff,dist); } int take_center(int n, vector<vector<pii> >& g){ pair<int,vi> pr=djikstra(n,1,g); int a=pr.ff; pr=djikstra(n,a,g); vi dista=pr.ss; vi distb=djikstra(n,pr.ff,g).ss; int center=-1; for(int i=1;i<=n;i++){ // cout<<i<<": "<<dista[i]<<" "<<distb[i]<<' '<<max(dista[i],distb[i])<<endl; center=center==-1 or max(dista[i],distb[i])<center ? max(dista[i],distb[i]) : center; } return center; } int travelTime(int N, int M, int L, int A[], int B[], int T[]){ int n=N; int l=L; vector<vector<pii> > g(n); for(int i=0;i<M;i++){ g[A[i]].push_back({B[i],T[i]}); g[B[i]].push_back({A[i],T[i]}); } vi centers; unordered_map<int,int> mp; int counter=1; //encontra todas as arvores os centros de cada arvore for(int i=0;i<n;i++){ if(mp.find(i)==mp.end()){ int sz=counter; counter++; mp[i]=sz; unordered_map<int,int> to_new; queue<int> q; q.push(i); unordered_set<int> visited; visited.insert(i); to_new[i]=1; vector<vector<pii> > current(2); while(!q.empty()){ int top=q.front();q.pop(); for(auto j : g[top]){ if(visited.find(j.ff)==visited.end()){ visited.insert(j.ff); mp[j.ff]=sz; to_new[j.ff]=current.size(); q.push(j.ff); vector<pii> empty; current.push_back(empty); current[to_new[top]].push_back({to_new[j.ff],j.ss}); current[to_new[j.ff]].push_back({to_new[top],j.ss}); } } } /* cout<<i<<": "<<endl; for(int i=1;i<current.size();i++){ cout<<i<<": "; for(auto j : current[i]) cout<<j.ff<<" "<<j.ss<<" "; cout<<endl; } cout<<"center: "<<take_center(current.size()-1,current); cout<<endl<<endl;*/ centers.push_back(take_center(current.size()-1,current)); } } //for(auto center:centers) cout<<center<<' '; //cout<<endl; sort(centers.begin(),centers.end(), greater<int>()); if(centers.size()==1){ return centers[0]; }else if(centers.size()==2){ return centers[0]+centers[1]+l; }else{ return max(centers[0]+centers[1]+l,centers[1]+centers[2]+2*l); } }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccBVi3Yy.o: in function `main':
grader.c:(.text.startup+0xc5): undefined reference to `travelTime'
collect2: error: ld returned 1 exit status