제출 #849175

#제출 시각아이디문제언어결과실행 시간메모리
849175abcvuitunggio경주 (Race) (IOI11_race)C++17
100 / 100
315 ms80208 KiB
#include "race.h" #include <bits/stdc++.h> using namespace std; vector <pair <int, int>> ke[200001]; map <long long, long long> mp[200001]; long long k,len[200001],res=1e9,d[200001]; void dfs(int u, int p){ int bigchild=-1,sz=0; for (auto [v,w]:ke[u]) if (v!=p){ d[v]=d[u]+1; len[v]=len[u]+w; dfs(v,u); if (mp[v].size()>sz){ sz=mp[v].size(); bigchild=v; } } if (bigchild!=-1) swap(mp[u],mp[bigchild]); for (auto [v,w]:ke[u]){ if (v!=bigchild){ for (auto [l,h]:mp[v]) if (mp[u].count(k+len[u]*2-l)) res=min(res,mp[u][k+len[u]*2-l]+h-d[u]*2); for (auto [l,h]:mp[v]) if (!mp[u].count(l)) mp[u][l]=h; else mp[u][l]=min(mp[u][l],h); mp[v].clear(); } } if (mp[u].count(k+len[u])) res=min(res,mp[u][k+len[u]]-d[u]); if (!mp[u].count(len[u])) mp[u][len[u]]=d[u]; else mp[u][len[u]]=min(mp[u][len[u]],d[u]); } int best_path(int N, int K, int H[][2], int L[]){ k=K; for (int i=0;i<N-1;i++){ ke[H[i][0]].push_back({H[i][1],L[i]}); ke[H[i][1]].push_back({H[i][0],L[i]}); } dfs(0,0); return (res>N?-1:res); }

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

race.cpp: In function 'void dfs(int, int)':
race.cpp:14:29: warning: comparison of integer expressions of different signedness: 'std::map<long long int, long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   14 |             if (mp[v].size()>sz){
      |                 ~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...