pat 1003. Emergency (25)
2017-12-10 10:51
411 查看
#include <iostream> #include <algorithm> using namespace std; #include <vector> struct Node { int dist=0; int recume=0; }; vector<Node> res; int a[505][505]={0}; int eachRes[500]; int n,m; bool way[500]; void dfs(int now,int desti,Node tmp){ for(int i=0;i<n;i++){ if(a[now][i]>0){ tmp.dist += a[now][i]; tmp.recume += eachRes[i]; a[now][i] = -1; a[i][now] = -1; if(i==desti){ res.push_back(tmp); }else dfs(i,desti,tmp); tmp.dist = 0; tmp.recume = eachRes[now]; } } return; } bool cmp1(Node a,Node b){ if(a.dist!=b.dist) return a.dist<b.dist; else return a.recume>b.recume; } int main() { ios::sync_with_stdio(false); int now,desti; Node tmp; cin>>n>>m>>now>>desti; for(int i=0;i<n;i++){ cin>>eachRes[i]; } int c1,c2,d; for(int i=0;i<m;i++){ cin>>c1>>c2>>d; a[c1][c2] = d; a[c2][c1] = d; } for(int i=0;i<500;i++){ way[i] = false; } way[now] = true; tmp.recume += eachRes[now]; dfs(now,desti,tmp); sort(res.begin(),res.end(),cmp1); cout<<res[0].dist<<" "<<res[0].recume; return 0; }
只过一个测试点(10’)
还没找出错误
相关文章推荐
- pat甲级1003. Emergency (25)
- PAT-A 1003. Emergency (25)
- pat-a1003. Emergency (25)
- PAT(A) 1003. Emergency (25)
- PAT 解题报告 1003. Emergency (25)
- PAT (Advanced Level) 1003. Emergency (25) 解题报告
- Pat甲级1003. Emergency (25)
- PAT 1003. Emergency (25)
- PAT 1003. Emergency (25)(俩点间最短路径)
- PAT 1003. Emergency (25)
- [PAT]1003. Emergency (25)
- PAT 1003. Emergency (25)<最短路径,最大搜救人数>
- PAT 1003. Emergency (25)
- PAT(Advanced Level) 1003. Emergency(25) 最短路 + DFS
- 【PAT】1003. Emergency (25)
- PAT 1003. Emergency (25)
- pat 1003. Emergency (25)
- pat 1003. Emergency (25)
- PAT_A 1003. Emergency (25)
- PAT 甲级 1003. Emergency (25)