제출 #397834

#제출 시각아이디문제언어결과실행 시간메모리
397834cfalas기지국 (IOI20_stations)C++14
0 / 100
827 ms608 KiB
#include "stations.h" #include<bits/stdc++.h> using namespace std; #define mp make_pair #define INF 10000000 #define MOD 1000000007 #define MID ((l+r)/2) #define HASHMOD 2305843009213693951 #define ll long long #define ull unsigned long long #define F first #define S second typedef pair<ll, ll> ii; typedef pair<ii, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef map<int, int> mii; #define EPS 1e-6 #define FOR(i,n) for(int i=0;i<((int)(n));i++) #define FORi(i,a,b) for(int i=((int)(a));i<((int)(b));i++) #define FOA(v, a) for(auto v : a) vi label(int n, int k, std::vector<int> u, std::vector<int> v) { vi labels(n); vector<vi> adj(n, vi()); FOR(i,n-1){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } // find hub int h=0; vector<bool> vis(n, false); FOR(i,n) if(adj[i].size()>2){ h=i; break; } labels[h] = 1000000; vis[h] = true; int off=0; FOA(s,adj[h]){ int cnt=0; bool ff = true; while(ff){ vis[s] = true; labels[s] = off+cnt++; ff = false; FOA(v, adj[s]) if(!vis[v]) s = v, ff=true; } assert(cnt<=1000); off+=1000; } FOR(i,n) assert(vis[i]); //FOA(v,labels) cout<<v<<" "; cout<<endl; return labels; } int find_next_station(int s, int t, std::vector<int> c) { //cout<<s<<" "<<t<<endl; if(s==1000000) return t/1000 * 1000; else if(s/1000!=t/1000 || s>t) return *min_element(c.begin(), c.end()); else return s+1; }
#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...