wiki 1254 城堡
来源:互联网 发布:高贵女人必知的十句话 编辑:程序博客网 时间:2024/05/21 07:13
这个题表述的有点模糊。我一开始认为只要到公主的房间就停止了,即只有在最后一步进到公主的房间,在中间过程是不能经过公主的房间。 但是一直wa,所以我就把数据下载下来,跑了几个wa的数据发现,原来中间过程可以经过公主的房间。 另外,此题说随意给出一组答案就行,但是我通过跑测试数据发现我的答案是对的,但是就是wa,估计系统检测有问题,希望大家做的时候注意此题。下载数据花了我100积分。。我在此共享给大家。
我的代码:
#include <iostream>#include <string.h>#include <stdio.h>#include <queue>#include <vector>using namespace std;int n,m,e,p,b;int cost[105],map[105][105],dp[105][1005];struct Node{ int num,money;};queue<Node> q;void init(){ cin >> n >> m >> e >> p >> b; memset(map, 0, sizeof(map)); for(int i = 1; i <= n; i++) cin >> cost[i]; for(int i = 0; i < m; i++){ int x,y; cin >> x >> y; map[x][y] = 1; map[y][x] = 1; } memset(dp, 0, sizeof(dp));}int main(int argc, const char * argv[]){ init(); if(p==e) cout << p << endl; else{ Node node = Node{e,b-cost[e]}; q.push(node); while(!q.empty() && !dp[p][0]){ Node temp = q.front(); q.pop(); for(int i = 1; i <= n; i++){ if(map[temp.num][i]){ if(cost[i]<=temp.money && !dp[i][temp.money-cost[i]]){ q.push(Node{i,temp.money-cost[i]}); dp[i][temp.money-cost[i]] = temp.num; } } } } vector<int> result; int sum = cost[p]; int t = dp[p][0]; result.push_back(t); while(!(t==e&&sum==b-cost[e])){ int temp = t; t = dp[t][sum]; result.push_back(t); sum += cost[temp]; } for(int i = result.size()-1; i>=0; i--) printf("%d ",result[i]); cout << p << endl; }}
0 0
- wiki 1254 城堡
- 城堡
- 城堡
- 城堡
- wiki
- Wiki
- wiki
- wiki
- wiki
- WIKI?
- wiki
- WIKI
- wiki
- wiki
- wiki
- wiki
- Wiki
- wiki
- UVA 10198 Counting
- hdu 1074
- 【iOS与EV3混合机器人编程系列之五】iOS_WiFi_EV3_Library 剖析之连接EV3
- hdu 1215--七夕节
- mybatis配置
- wiki 1254 城堡
- 游戏开发常用算法一
- 设置Linux ssh登录前后的欢迎信息
- mysql数据库配置优化(占cpu过高问题)
- 正则表达式 方括号表达式 区间表达式
- chromium spdy实现解析
- 粗解Xcode 5新特性: Asset Catalogs
- 输出局部与全局两个同名变量
- 游戏开发常用算法二