이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "race.h"
const int maxn=1005;
struct Edge{
int to,dis,next;
}edge[1005];
int head[maxn],edge_num;
void addedge(int from,int to,int dis)
{
edge[++edge_num].to=to;
edge[edge_num].dis=dis;
edge[edge_num].next=head[from];
head[from]=edge_num;
}
int LL[maxn],KK;
int m;
bool vis[maxn];
int p,l,ans;
void dfs(int x)
{
if(l>KK)return;
if(l==KK)
{
if(p<ans)ans=p;
return;
}
for(int i=head[x];i;i=edge[i].next)
{
int v=edge[i].to;
if(!vis[v])
{
vis[v]=true;
l+=edge[i].dis;
p++;
dfs(v);
p--;
l-=edge[i].dis;
vis[v]=false;
}
}
return ;
}
int best_path(int N, int K, int H[][2], int L[])
{
KK=K;
ans=N+1;
for(int i=0;i<N-1;i++)
addedge(H[i][0],H[i][1],L[i]);
for(int i=0;i<N;i++)
{
p=0;
l=0;
vis[i]=true;
dfs(i);
vis[i]=false;
}
if(ans==N+1)return -1;
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |