Submission #422615

#TimeUsernameProblemLanguageResultExecution timeMemory
422615TLP39기지국 (IOI20_stations)C++14
100 / 100
1016 ms776 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; int n; vector<int> adj[1003]; int par[1003]={}; int si[1003]={}; int lab[1003]; void dfs(int v) { si[v]=1; for(int i=0;i<adj[v].size();i++) { if(adj[v][i]==par[v]) continue; par[adj[v][i]]=v; dfs(adj[v][i]); si[v]+=si[adj[v][i]]; } } void getlabel(int v,int st,int ed) { lab[v]=st; if(st==ed) return; int x=st,y; if(st<ed) { for(int i=0;i<adj[v].size();i++) { if(adj[v][i]==par[v]) continue; y=x+1; x+=si[adj[v][i]]; getlabel(adj[v][i],x,y); } return; } for(int i=0;i<adj[v].size();i++) { if(adj[v][i]==par[v]) continue; y=x-1; x-=si[adj[v][i]]; getlabel(adj[v][i],x,y); } return; } std::vector<int> label(int N, int k, std::vector<int> u, std::vector<int> v) { for(int i=0;i<=n;i++) adj[i].clear(); n=N; std::vector<int> labels(N); par[0]=-1; for(int i=0;i<n-1;i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0); getlabel(0,0,n-1); for(int i=0;i<n;i++) labels[i]=lab[i]; return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(c.size()==1) return c[0]; if(s==0) { for(int i=0;i<c.size();i++) { if(c[i]>=t) return c[i]; } } if(c[0]<s) { if(t>s || t<c[1]) return c[0]; for(int i=c.size()-1;i>0;i--) { if(c[i]<=t) return c[i]; } } int ss=c.size()-1; if(t<s || t>c[ss-1]) return c[ss]; for(int i=0;i<ss;i++) { if(t<=c[i]) return c[i]; } return -1; }

Compilation message (stderr)

stations.cpp: In function 'void dfs(int)':
stations.cpp:15:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(int i=0;i<adj[v].size();i++)
      |                 ~^~~~~~~~~~~~~~
stations.cpp: In function 'void getlabel(int, int, int)':
stations.cpp:31:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |         for(int i=0;i<adj[v].size();i++)
      |                     ~^~~~~~~~~~~~~~
stations.cpp:40:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for(int i=0;i<adj[v].size();i++)
      |                 ~^~~~~~~~~~~~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:70:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |         for(int i=0;i<c.size();i++)
      |                     ~^~~~~~~~~
#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...