PAT-A1003
来源:互联网 发布:c语言1.0f 编辑:程序博客网 时间:2024/06/04 19:43
#include<stdio.h> int road[510][510],vst[510],hper[510]; //救援队伍数量 int N,M,C1,C2,shpath=-1,maxhp=-1,cnt=0; int main(){ void dfs(int from,int len,int helpers); //函数声明 int i,j; int c1,c2,l; scanf("%d %d %d %d",&N,&M,&C1,&C2); for(i=0;i<N;i++){ scanf("%d",&hper[i]); //输入救援队伍数量 vst[i]=0; //初始化访问标志数组 for(j=0;j<N;j++){ road[i][j]=-1; //二维数组存储对应边的权值 road[j][i]=-1; //初始化二维数组 } } for(i=0;i<M;i++){ //输入边的权值 scanf("%d %d %d",&c1,&c2,&l); road[c1][c2]=l; road[c2][c1]=l; } vst[C1]=1; //从C1开始访问 dfs(C1,0,hper[C1]); printf("%d %d\n",cnt,maxhp); //count,找到的路径条数;maxhp,能到达的最大救援队数量 return 0; } void dfs(int from,int len,int helpers){ int i,j; if(len>shpath&&shpath!=-1){ return; } if(from==C2){ //递归调用到底,起点即为路径终点C2 if(len<shpath||shpath==-1){ //找到一条权值更小的路径 shpath=len; maxhp=helpers; cnt=1; } else if(len==shpath){ //找到权值最小的不同路径 cnt++; if(helpers>maxhp){ maxhp=helpers; } } return; } //递归调用到底,起点即为路径终点C2 for(i=0;i<N;i++){ if(vst[i]==0&&road[from][i]!=-1){ vst[i]=1; dfs(i,len+road[from][i],helpers+hper[i]); vst[i]=0; //为下一趟不同路径寻找还原vst【】数组值 } } }
0 0
- PAT A1003
- PAT-A1003
- PAT A1003 Emergency
- PAT A1003 Emergency(25)
- PAT A1003. Emergency (25)
- pat-a1003. Emergency (25)
- PAT甲级练习题A1003. Emergency
- a1003. Emergency (25)
- 刷清橙OJ--A1003.画长方形1
- Tsinsen 清橙 A1003. 画长方形1 (循环)
- pat
- 【PAT】
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- Gym 101149L Right Build[BFS]
- golang 简短变量声明注意事项
- 仿微信照片多选
- nginx 配置多站点
- 简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- PAT-A1003
- 大型网站架构演变发展历程
- 操作系统动态库调用过程
- TensorFlow基本概念
- Linux下高并发socket最大连接数所受的各种限制
- 21.ArrayList内部类迭代器 + java 反射
- 分布式下的session处理方式
- 数据库中事务的四大特性(ACID),事务的隔离级别
- weex 集成记录