浙大PAT甲级-1003
来源:互联网 发布:杰视帮美工教程 编辑:程序博客网 时间:2024/05/16 06:25
第一次着手解决这类题,感觉思想很简单,但却无从下手,主要参考这篇博客(http://blog.csdn.net/iaccepted/article/details/21451949)写的
值得学习的地方:
-图用一个二维数组存储
-dfs函数的大概模式(判断是否到末节点,剪枝,递归调用......)
#include <iostream>#include <climits>using namespace std;const int MAX=501;int v,teams[MAX],visit[MAX], map[MAX][MAX];int cnt=0;int maxt=0;int minl=INT_MAX;void init(int n){ for(int i=0;i<n;i++){ visit[i]=0; for(int j=0;j<n;j++) map[i][j]=INT_MAX; }}void dfs(int s,int e,int team,int len){ if(s==e){ if(len<minl){ minl=len; cnt=1; maxt=team; }else if(len==minl){ cnt++; if(maxt<team) maxt=team; } return; } //剪枝 if(len>minl)return; for(int i=0;i<v;i++){ if(visit[i]==0&&map[s][i]<INT_MAX){ visit[i]=1; dfs(i,e,team+teams[i],len+map[s][i]); visit[i]=0; } }}int main(){ int e,start,end; cin>>v>>e>>start>>end; for(int i=0;i<v;i++) cin>>teams[i]; init(v); int v1,v2,l; int m=e; while(m--){ cin>>v1>>v2>>l; if(map[v1][v2]>l) map[v1][v2]=map[v2][v1]=l; } dfs(start,end,teams[start],0); cout<<cnt<<" "<<maxt; return 0;}
阅读全文
0 0
- 浙大PAT甲级-1003
- 浙大pat甲级 1023
- 浙大pat甲级 1024
- 浙大pat甲级 1025
- 浙大PAT甲级 1026
- 浙大PAT甲级 1028
- 浙大PAT甲级 1029
- 浙大PAT甲级 1030
- 浙大PAT甲级 1031
- 浙大PAT甲级 1032
- 浙大PAT甲级 1033
- 浙大PAT甲级 1035
- 浙大PAT甲级 1037
- 浙大PAT甲级 1039
- 浙大PAT甲级 1040
- 浙大PAT甲级 1038
- 浙大PAT甲级 1041
- 浙大PAT甲级 1042
- 简单的文本处理命令
- Scrapy爬虫实战一:获取中影国际影城信息
- VR系列——Oculus Rift 开发者指南:三、Oculus Rift的渲染(五)
- 通过源码分析MyBatis的缓存/Mybatis解析动态sql原理分析
- jQuery基本知识
- 浙大PAT甲级-1003
- Invalid bound statement (not found)
- POJ 1262 Input 笔记
- libvirt-使用iso镜像创建主机&修改启动盘&启动
- 大话设计模式阅读笔记-简单工厂方法
- python模块以及导入出现ImportError: No module named 'xxx'问题
- 组合设计模式2
- 带你一步步走入Paxos的世界 -- 序列2
- Ubuntu16.04+caffe+Opencv3+Python(CPU ONLY)