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 |
怎么会这样,不就是一个深搜吗?WA到死#include <cstdio> #include <cstring> using namespace std; #define MAXN 11 #define MAXM 100 #define INF 10000 int pi[MAXM];//间接访问代价 int ri[MAXM];//直接访问代价 int p[MAXM];//需要间接访问的点 int s[MAXM];//边列表 int e[MAXM]; int vi[MAXN];//点是否被访问 bool ans;//是否存在结果 int n,m; int res; void BFS(int st,int cp,int c) { int i; int j; int tp; //for(j=1;j<=c;j++)printf(" "); //printf("start=%d cp=%d\n",st,cp); for(i=1;i<=m;i++) { if(s[i]==st) { //for(j=1;j<=c;j++)printf(" "); //printf("i=%d e[i]=%d\n",i,e[i]); if(vi[p[i]]>0) { tp=cp; tp+=ri[i]>pi[i]?pi[i]:ri[i]; } else tp=cp+ri[i]; //for(j=1;j<=c;j++)printf(" "); //printf("tp=%d\n",tp); if(tp>res) return; if(e[i]==n) { ans=true; if(res>tp) res=tp; //for(j=1;j<=c;j++)printf(" "); //printf("res=%d\n",res); } vi[e[i]]++; //for(j=1;j<=c;j++)printf(" "); //printf("into %d\n",e[i]); BFS(e[i],tp,c+1); //for(j=1;j<=c;j++)printf(" "); //printf("back %d\n",st); vi[e[i]]--; } } } int main() { int i; scanf("%d%d",&n,&m); for(i=1;i<=m;i++) scanf("%d%d%d%d%d",&s[i],&e[i],&p[i],&pi[i],&ri[i]); if(n==1) { printf("0\n"); return 0; } memset(vi,0,sizeof(vi)); res=INF; vi[1]=1; ans=false; BFS(1,0,0); if(ans) printf("%d\n",res); else printf("impossible\n"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator