POJ 1062 最短路Dijstra
汉语题。。。 题意正如你看到的酱。。。
看的解题报告。思路大概是把每个点看做最高等级。然后枚举所有当前可以访问的点。进行dijstra算法。找到此时到目标点最短路。枚举完之后找到最小的点就可以了。
POJ还在继续BUG中。。。。。代码应该是对的没有AC。。。。
附代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#define maxn 210
#define inf 0x1f1f1f1f
using namespace std;
bool vis[maxn]; // 表示是否访问过
int dist[maxn]; // 源点到目标点的价格。即原价
int price[maxn][maxn]; // price[t][i]表示替代品是t时i的价格。
int x[maxn]; //x[i]表示i物品有多少替代品。
int min_p, temp_p;
int m, n;
int lv[maxn]; // lv[i]表示i物品主人的等级
void init()
{
memset(lv, 0, sizeof(lv));
memset(dist, inf, sizeof(dist));
memset(price, 0, sizeof(price));
memset(vis, false, sizeof(vis));
min_p = inf;
}
int dijstra()
{
temp_p = 0;
for (int i=1; i<=n; ++i)
{
dist[i] = price[0][i];
}
for (int i=1; i<=n; ++i)
{
int mmin = inf;
int k = 0;
for (int j=1; j<=n; ++j)
{
if (!vis[j] && dist[j] < mmin)
{
mmin = dist[j];
k = j;
}
}
if (k == 0) break;
vis[k] = true;
temp_p += mmin;
for (int j=1; j<=n; ++j)
{
if (!vis[j] && price[k][j] > 0 && dist[j] > dist[k] + price[k][j])
dist[j] = dist[k] + price[k][j];
}
}
return dist[1];
}
int main()
{
while(cin >> m >> n)
{
init();
for (int i=1; i<=n; ++i) // 物品标号从1到n.
{
cin >> price[0][i] >> lv[i] >> x[i];
for (int j=0; j<x[i]; ++j)
{
int t, v;
cin >> t >> v;
price[t][i] = v;
}
}
for (int i=1; i<=n; ++i) // 把每个点作为最高等级 尝试遍历寻找到目标点1的最短路
{
for (int j=1; j<=n; ++j)
{
if (lv[j] > lv[i] || lv[i] - lv[j] > m)
vis[j] = true;
else vis[j] = false;
}
//cout << temp_p << "==\n";
temp_p = dijstra();
if (temp_p < min_p)
min_p = temp_p;
}
cout << min_p << endl;
}
return 0;
}
附参考出处:http://blog.csdn.net/lyy289065406/article/details/6645852
POJ 1062 最短路Dijstra的更多相关文章
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- 最短路POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 昂贵的聘礼(图论,最短路径)
POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...
- Heavy Transportation POJ 1797 最短路变形
Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...
- POJ 1062 昂贵的聘礼 最短路 难度:0
http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...
- poj 1062(有限制的最短路)
题目链接:http://poj.org/problem?id=1062 思路:要求对于最短路上的点,不能出现等级之差大于m,于是我们可以枚举,假设酋长的等级为level,于是这个区间范围[level- ...
- poj 1062 昂贵的聘礼(最短路 dijk+枚举)
终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...
- 昂贵的聘礼 POJ - 1062(最短路)
年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:" ...
随机推荐
- 20145127《java程序设计》第十周学习总结
Java的网络编程 1.计算机网络概述 (1)路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤.网线等连接将设备连接起来,从而形成了一张巨大的计算机网络. (2)网 ...
- 前端开发环境全面配置 --- mac OS
Mac 开发配置 brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...
- VC++使用IMAPI调用Outlook邮箱客户端和Foxmail邮箱客户端遇到的问题
http://www.cnblogs.com/abiao/articles/303090.html 发送邮件 MAPISendMail() 发送邮件功能就是对MAPISendMail()的封装.下面解 ...
- 一个改写MBR的例子
前言 想要对MBR类的病毒进行一下研究与学习,在此期间,看了很多资料,其中帮助最大的就是金龟子学姐和willj学长发表的文章.一个从源码与实现角度来讲了一下,另外一个从反病毒角度来分析. 功能描述 ...
- HDU1143 (递推)题解
Tri Tiling Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1823 Luck and Love (二维线段树&区间最值)题解
思路: 树套树,先维护x树,再维护y树,多练练应该就能懂了 代码: #include<cstdio> #include<cmath> #include<cstring&g ...
- [codeWars] - 8kyu的简单复习
https://www.codewars.com/kata/5aa736a455f906981800360d public class Kata { public static boolean fea ...
- NOI 16 买房子
买房子(NOI 16) 总时间限制: 1000ms 内存限制: 65536kB 描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K ...
- zeptojs库解读3之ajax模块
对于ajax,三步骤,第一,创建xhr对象:第二,发送请求:第三,处理响应. 但在编写过程中,实际中会碰到以下问题, 1.超时 2.跨域 3.后退 解决方法: 1.超时 设置定时器,规定的时间内未返回 ...
- asp.net webform 自定义 select 绑定数值
前台: <select id="ddlAddedItemType" runat="server"> <option value="& ...