博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3411 Paid Roads (dfs)
阅读量:7072 次
发布时间:2019-06-28

本文共 927 字,大约阅读时间需要 3 分钟。

这题RE了N多次,到最后也不知道是什么原因。看到网上说vis[x]不会超过3,就试着加上了<=3的限制,我了个去,马上AC!

问题应该还是递归过程爆栈了吧。

code:

#include<cstdio>
#include<cstring>
const 
int MAX = 
99999999 ;
int vis[
15] ;
int ans, n, m ;
bool flag ;
struct node{
    
int a ;
    
int b ;
    
int c ;
    
int p ;
    
int r ;
}q[
15] ;
void dfs(
int i, 
int v){
    
if(v>ans)   
return ;
    
if(i==n){
        flag = 
true ;
        ans = v ;
        
return ;
    }
    
for(
int j=
0; j<m; j++){
        
if(q[j].a!=i)  
continue ;
        
if(vis[q[j].b]<=
3){
            vis[q[j].b] ++ ;
            
if(vis[q[j].c])    dfs(q[j].b, q[j].p + v) ;
            
else dfs(q[j].b, q[j].r + v) ;
            vis[q[j].b] -- ;
        }
    }
}
int main(){
    
int i, j, a ;
    
while(~scanf(
"
%d%d
", &n, &m)){
        memset(vis, 
0
sizeof(vis)) ;
        memset(q, 
0
sizeof(q)) ;
        flag = 
false ;
        ans = MAX ;
        
for(i=
0; i<m; i++)
            scanf(
"
%d%d%d%d%d
", &q[i].a, &q[i].b, &q[i].c, &q[i].p, &q[i].r) ;
        dfs(
1
0) ;
        
if(flag)    printf(
"
%d\n
", ans) ;
        
else    printf(
"
impossible\n
") ;
    }
    
return 
0 ;}

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/02/29/2373912.html

你可能感兴趣的文章
CSS3 Filter的十种特效
查看>>
实用的eclipse adt 快捷键
查看>>
bootstrap 树
查看>>
Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
查看>>
电容知识汇总
查看>>
【转】模块编译Android源码方法
查看>>
iOS8 CIGlassDistortion滤镜的使用
查看>>
windows运行打开服务命令的方法 :
查看>>
【C++】atoi与stoi
查看>>
Webservice soap wsdl区别之个人见解
查看>>
An Introduction to Garbage Collection(垃圾回收简介)
查看>>
提高tomcat的并发能力
查看>>
Delphi 中Format的字符串格式化使用说明(转)
查看>>
Drag & drop a button widget
查看>>
【转】 java中HashMap详解
查看>>
ODAC(V9.5.15) 学习笔记(一)总论
查看>>
Linux动态库搜索路径的技巧
查看>>
关于开源的RTP——jrtplib的使用
查看>>
非常特别的一个动态规划新手教程
查看>>
android FragmentPagerAdapter的“标准”配置
查看>>