제출 #741029

#제출 시각아이디문제언어결과실행 시간메모리
741029josanneo22경주 (Race) (IOI11_race)C++17
21 / 100
28 ms4356 KiB
#include <bits/stdc++.h>
using namespace std;

#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define fi first
#define se second

#include "race.h"
const int maxn=1005;
vector<vector<pii>> adj(maxn);
vector<int> w(maxn),d(maxn),vis(maxn);
void dfs(int u,int p,int dep,int from){
    if(vis[u]) return;
    w[u]=p; d[u]=dep; vis[u]=1;
    for(auto&v:adj[u]){
      if(!vis[v.fi]&& v.fi!=from)
        dfs(v.fi,p+v.se,dep+1,u);
    }
}
int best_path(int n, int k, int H[][2], int L[])
{
    for(int i=0;i<n-1;i++){
      adj[H[i][0]].pb(mp(H[i][1],L[i]));
      adj[H[i][1]].pb(mp(H[i][0],L[i]));
    }
    int ans=INT_MAX;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
          d[j]=-1;
          w[j]=-1;
          vis[j]=0;
        }
        dfs(i,0,0,i);
        for(int j=0;j<n;j++){
          if(w[j]==k) ans=min(ans,d[j]);
        } 
    }
    if(ans==INT_MAX) return -1;
    else return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...