1003. Emergency (25)
来源:互联网 发布:海通期货软件 编辑:程序博客网 时间:2024/06/08 11:49
#include<iostream>#include<climits>int map[500][500];int n1=0,dist1=INT_MAX,numb1,n;int visited[500]={0},num[500];void dfs(int c1,int c2,int dist,int numb){ if(c1==c2){ if(dist<dist1){ n1=1; numb1=numb; dist1=dist; return; } if(dist==dist1){ n1++; if(numb>numb1) numb1=numb; return; } if(dist>dist1) return; } for(int i=0;i<n;i++){ if(map[c1][i]!=INT_MAX&&!visited[i]){ visited[i]=1; dfs(i,c2,dist+map[c1][i],numb+num[i]); visited[i]=0; } }}int main(){ using namespace std; cin>>n; int m,c1,c2; cin>>m; cin>>c1; cin>>c2; for(int i=0;i<n;i++){ cin>>num[i]; } for(int i=0;i<500;i++) for(int j=0;j<500;j++) map[i][j]=INT_MAX; for(int i=0,x,y,d;i<m;i++){ cin>>x; cin>>y; cin>>d; if(d<map[x][y]) map[x][y]=map[y][x]=d; } dfs(c1,c2,0,num[c1]); cout<<n1<<' '<<numb1; return 0;}
第一次写博客,最近在刷PAT,之前都没怎么好好编过代码,算是从头开始吧,就想把自己的成长记录下来,加油吧!
自己动手来实现dfs和迪杰斯特拉算法还是 有一定难度的,花了很长时间来看别人代码,然后又自己写一遍,真的很菜,发现dfs也能求最短路径
阅读全文
0 0
- 1003. Emergency (25)
- 1003. Emergency (25)-PAT
- (PAT)1003. Emergency (25)
- 1003. Emergency (25)
- 【C++】1003. Emergency (25)*
- 1003. Emergency (25)
- PAT 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- PAT 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- [PAT]1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- JZOJ1229. Hanoi(2017.8B组)
- mysql之触发器trigger
- cocoa touch 框架结构图
- 内存数组流(ByteArrayInputStream、CharArrayReader、StringReader)
- 文件解析漏洞总结-Apache
- 1003. Emergency (25)
- Satellite Photographs(dfs)
- c++技巧
- 养成这6个编程好习惯,助你减少90%BUG
- 利用对象的思想创建二叉树并实现四种遍历(广序,先序,中序,后序)-python3版
- iOS 一一 AutoLayout之VFL实现
- 数据结构-循环链表
- Java数据结构与算法
- 生产者消费者模型