pat-A 1003 回溯+剪枝
2015-09-26 15:59
771 查看
这道题逻辑上是很清楚,就怕有人把回溯写成深搜了。。。。
别忘了剪枝 要不最后一个点过不了。
别忘了剪枝 要不最后一个点过不了。
#include<iostream> #include<cstdio> #include<queue> #include<vector> #include<algorithm> #include<set> #include<stack> #include<cmath> #include<cstring> #include<string> #include <iostream> #include <cstdio> #include<climits> using namespace std; int mp[510][510]; int visited[510]; int minst=100000000; int maxeg = 0; int cnt = 0; vector<int> edge; int n; void solver(int cur,int end,int st,int cou){ if (cur == end) { if (st < minst) { cnt = 1; minst = st; maxeg = cou; return; } else if(st==minst){ ++cnt; if (cou > maxeg) maxeg = cou; return; } } if (st > minst) { return; } int i; for ( i = 0; i < n; i++){ if (mp[cur][i] != 0 && !visited[cur]){ visited[cur] = 1; solver(i, end, st + mp[cur][i], cou + edge[i]); visited[cur] = 0; } } } int main(){ int m, c1, c2; cin >> n >> m >> c1 >> c2; for (int i = 0; i < n; i++){ edge.push_back(0); cin >> edge[i]; } for (int i = 0; i < m; i++){ int a, b,d; cin >> a >> b>>d; mp[a][b] = d; mp[b][a] = d; } solver(c1,c2,0,edge[c1]); cout << cnt <<" "<< maxeg<<endl; return 0; }
相关文章推荐
- iOS开发之NSBundle的使用详解
- 基于jQuery仿淘宝产品图片放大镜代码分享
- Java:instanceof用法
- ICMP Internet 控制报文协议
- 判断数组是否存在某个值
- java基础的一些概念.够自己有时间查看
- SQLLite保存单词到本地数据库中
- android进阶之监听回调实现
- android-requestFocus EditText 默认获得光标
- AFNetwork 2.0
- Linux 中 10 个有用的命令行补全例子
- Linux 中 10 个有用的命令行补全例子
- Charm Bracelet
- Java用ZIP进行多文件压缩保存
- chain.doFilter(request,response) 解析
- epoll_wait 时 POLLERR 与 POLLIN 同时返回的现象解析
- Rabbitmq基本原理
- Week2 关于代码规范的一些认识
- Luminous的中秋
- Tomcat启动提示