제출 #958260

#제출 시각아이디문제언어결과실행 시간메모리
9582608pete8기지국 (IOI20_stations)C++17
100 / 100
593 ms1364 KiB
#include "stations.h" #include <vector> #include<iostream> #include<stack> #include<map> #include<vector> #include<string> #include<unordered_map> #include <queue> #include<cstring> #include<limits.h> #include<numeric> //gcd(a,b) #include<cmath> #include<set> #include<cassert> #include<algorithm> #include<bitset> #include<stack> using namespace std; #define ll long long #define f first #define endl "\n" #define s second #define pii pair<int,int> #define pppiiii pair<pii,pii> #define ppii pair<int,pii> #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define pb push_back //#define mp make_pair #define lb lower_bound #define ub upper_bound #define fastio ios::sync_with_stdio(false);cin.tie(NULL); const int mxn=1e3; vector<int>adj[mxn+10]; int tin[mxn+10],tout[mxn+10],t=-1; vector<int>v,lab; void dfs(int cur,int p){ if(!lab[cur])tin[cur]=++t; for(auto i:adj[cur])if(i!=p)dfs(i,cur); if(lab[cur])tout[cur]=++t; } vector<int> label(int n, int k,vector<int> U,vector<int> V) { v.assign(n,0),lab.assign(n,0); t=-1; for(int i=0;i<n-1;i++)adj[U[i]].pb(V[i]),adj[V[i]].pb(U[i]); queue<pii>q; lab[0]=1; q.push({0,0}); while(!q.empty()){ int cur=q.front().f,p=q.front().s; q.pop(); lab[cur]=lab[p]^1; for(auto i:adj[cur])if(i!=p)q.push({i,cur}); } dfs(0,-1); for(int i=0;i<n;i++)v[i]=((lab[i])?tout[i]:tin[i]); for(int i=0;i<n;i++)adj[i].clear(); return v; } int find_next_station(int a, int b, vector<int> c){ if(a<c[0]){ //a is tin,other is tout if(b<a||b>=c.back())return c.back();//outside subtree for(int i=1;i<c.size();i++)if(c[i-1]<b&&b<=c[i])return c[i]; return c[0]; } else{ //a is tout,other is tin if(b>a||b<=c[0])return c[0]; for(int i=0;i<c.size()-1;i++)if(c[i]<=b&&b<c[i+1])return c[i]; return c.back(); } }/* int main(){ int n,k;cin>>n>>k; vector<int>a(n-1),b(n-1); for(int i=0;i<n-1;i++)cin>>a[i]; for(int i=0;i<n-1;i++)cin>>b[i]; vector<int>bruh=label(n,k,a,b); for(auto i:bruh)cout<<i<<" "; vector<int>g; for(auto i:adj[1])g.pb(bruh[i]); cout<<find_next_station(9,7,g)<<"B\n"; }*/

컴파일 시 표준 에러 (stderr) 메시지

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:65:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |   for(int i=1;i<c.size();i++)if(c[i-1]<b&&b<=c[i])return c[i];
      |               ~^~~~~~~~~
stations.cpp:71:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |   for(int i=0;i<c.size()-1;i++)if(c[i]<=b&&b<c[i+1])return c[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...