| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
同志们帮我看看吧,最简单的DFS一直报WA,起码你也报TLE啊所有的测试数据都过了....max初始为-1应该也可以输出-1啊
#include <stdio.h>
#include <stdlib.h>
int l[128][128];
int t[128][128];
int visit[128];
int n;
int coins;
int max = -1;
void init()
{
int i=0,j=0;
for(i=0;i<128;i++)
{
for(j=0;j<128;j++)
l[i][j] = -1;
visit[i] = -1;
}
}
void dfs(int start,int now,int length)
{
int i=0;
for(i=0;i<n;i++)
{
if(l[start][i] != -1 && visit[i] == -1 &&
(max == -1 || length+l[start][i] <max) && now+t[start][i] <= coins)
{
if(i == n-1)
{
max = length + l[start][i];
continue;
}
visit[i] = 1;
dfs(i,now + t[start][i],length+l[start][i]);
visit[i] = -1;
}
}
}
int main(void)
{
init();
int roads;
scanf("%d %d %d",&coins,&n,&roads);
int i=0;
for(i=0;i<roads;i++)
{
int a,b;
scanf("%d %d",&a,&b);
a--;
b--;
scanf("%d %d",&l[a][b],&t[a][b]);
}
visit[0]=1;
dfs(0,0,0);
printf("%d\n",max);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator