제출 #1046066

#제출 시각아이디문제언어결과실행 시간메모리
1046066batsukh2006봉쇄 시간 (IOI23_closing)C++17
0 / 100
1094 ms26184 KiB
#include "closing.h" #include<iostream> #include<map> #include<set> #include<cmath> #include<queue> #include<deque> #include<stack> #include<string> #include<math.h> #include<vector> #include<stdio.h> #include<utility> #include<iomanip> #include<string.h> #include<limits.h> #include<algorithm> #include<functional> #include<unordered_map> using namespace std; #define ss second #define ff first #define endl '\n' vector<pair<int,int> > f,s; vector<vector<pair<int,int> > > g; void dfs1(int a, int p, int w){ f.push_back({w,a}); for(auto node: g[a]){ if(node.ff!=p){ dfs1(node.ff,a,w+node.ss); } } } void dfs2(int a, int p, int w){ s.push_back({w,a}); for(auto node: g[a]){ if(node.ff!=p){ dfs2(node.ff,a,w+node.ss); } } } int max_score(int n, int x, int y, long long k, vector<int> u, vector<int> v, vector<int> w){ f.clear(),s.clear(); g.clear(),g.resize(n); for(int i=0; i<w.size(); i++){ g[u[i]].push_back({v[i],w[i]}); g[v[i]].push_back({u[i],w[i]}); } dfs1(x,-1,0); dfs2(y,-1,0); sort(f.begin(),f.end()); sort(s.begin(),s.end()); int ans=0,sum=0,cur=0; vector<bool> vis(n); vector<int> dx(n),dy(n); for(auto i: f) dx[i.ss]=i.ff; for(auto i: s) dy[i.ss]=i.ff; for(auto i: f){ if(sum<=k){ cur++; sum+=i.ff; vis[i.ss]=1; int cnt=cur,tmp=sum; for(auto j: s){ if(tmp+j.ff<=k){ cnt++; if(vis[j.ss]){ if(dx[j.ss]<dy[j.ss]){ sum+=dy[j.ss]-dx[j.ss]; } }else{ tmp+=j.ff; } } } ans=max(ans,cnt); } } return ans; } // int main(){ // ios::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); // int T=1; // // cin>>T; // while(T--){ // int n,x,y,k; cin>>n>>x>>y>>k; // vector<int> u(n-1),v(n-1),w(n-1); // for(int i=0; i<n-1; i++) cin>>u[i]; // for(int i=0; i<n-1; i++) cin>>v[i]; // for(int i=0; i<n-1; i++) cin>>w[i]; // cout<<max_score(n,x,y,k,u,v,w)<<endl; // } // return 0; // }

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

closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:45:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for(int i=0; i<w.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...
#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...