제출 #655013

#제출 시각아이디문제언어결과실행 시간메모리
655013DJeniUpDesignated Cities (JOI19_designated_cities)C++17
0 / 100
589 ms66636 KiB
#include "bits/stdc++.h" //#pragma GCC optimize("O3") using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<ll,ll>pairll; typedef long double ld; #define fr first #define sc second #define pb push_back #define INF 100000000000000007 #define I 100000000000007 #define N 100007 #define endl '\n' #define MOD 998244353 ll n,res,resx,d[2*N],sz; vector<pairll>v[2*N]; map<ll,ll>m[2*N]; priority_queue<ll>q,q1; ll S(ll x,ll y){ ll rs=0; for(int i=0;i<v[x].size();i++){ if(v[x][i].fr!=y){ rs+=v[x][i].sc+S(v[x][i].fr,x); } } return rs; } void D(ll x,ll y,ll z){ if(res>z){ res=z; resx=x; sz=1; }else if(res==z)sz++; for(int i=0;i<v[x].size();i++){ if(v[x][i].fr!=y){ D(v[x][i].fr,x,z-v[x][i].sc+m[v[x][i].fr][x]); } } return ; } ll R(ll x,ll y){ ll k=0; for(int i=0;i<v[x].size();i++){ if(v[x][i].fr!=y){ ll r=R(v[x][i].fr,x)+v[x][i].sc; if(k<r)swap(k,r); if(r!=0 && x!=resx)q.push(r); else if(r!=0)q1.push(r); } } return k; } int main() { cin>>n; for(int i=1;i<n;i++){ ll x,y,z,z1; cin>>x>>y>>z>>z1; v[x].pb({y,z}); v[y].pb({x,z1}); m[x][y]=z; m[y][x]=z1; } res=INF; D(1,1,S(1,1)); if(sz>1)exit(1); ll k=R(resx,0); q1.push(k); ll x=res; //cout<<"! "<<res<<" "<<resx<<endl; q1.push(0); res-=q1.top(); q1.pop(); res-=q1.top(); q1.pop(); d[2]=res; while(q1.size()>0){ q.push(q1.top()); q1.pop(); } for(int i=3;i<=n;i++){ if(q.size()>0){ res-=q.top(); //cout<<i<<" "<<q.top()<<endl; q.pop(); } d[i]=res; } d[1]=x; ll Q; cin>>Q; for(int i=1;i<=Q;i++){ cin>>x; cout<<d[x]<<endl; } return 0; }

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

designated_cities.cpp: In function 'll S(ll, ll)':
designated_cities.cpp:30:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |     for(int i=0;i<v[x].size();i++){
      |                 ~^~~~~~~~~~~~
designated_cities.cpp: In function 'void D(ll, ll, ll)':
designated_cities.cpp:44:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     for(int i=0;i<v[x].size();i++){
      |                 ~^~~~~~~~~~~~
designated_cities.cpp: In function 'll R(ll, ll)':
designated_cities.cpp:54:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |     for(int i=0;i<v[x].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...