汉语题。。。 题意正如你看到的酱。。。

看的解题报告。思路大概是把每个点看做最高等级。然后枚举所有当前可以访问的点。进行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的更多相关文章

  1. 最短路(Dijkstra) POJ 1062 昂贵的聘礼

    题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...

  2. 最短路POJ 1062 昂贵的聘礼

    C - 昂贵的聘礼 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit St ...

  3. POJ 1062 昂贵的聘礼

    C - 昂贵的聘礼 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit St ...

  4. POJ 1062 昂贵的聘礼(图论,最短路径)

    POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...

  5. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

  6. POJ 1062 昂贵的聘礼 最短路 难度:0

    http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...

  7. poj 1062(有限制的最短路)

    题目链接:http://poj.org/problem?id=1062 思路:要求对于最短路上的点,不能出现等级之差大于m,于是我们可以枚举,假设酋长的等级为level,于是这个区间范围[level- ...

  8. poj 1062 昂贵的聘礼(最短路 dijk+枚举)

    终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...

  9. 昂贵的聘礼 POJ - 1062(最短路)

    年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:" ...

随机推荐

  1. 20145208 蔡野《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145208 蔡野<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode的获取代码 我使用了许心远同学博客中的代码 ...

  2. 理解 python 中__name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  3. AndroidStudio V2.0.0.汉化

    汉化包下载:http://pan.baidu.com/s/1kVKYUjH AndroidStudio V2.0.x.版汉化工作介绍 resource_en.jar------> resourc ...

  4. (转)Spring Boot(一)

    (二期)4.springboot的综合讲解 [课程四]springbo...概念.xmind64.5KB [课程四]spring装配方式.xmind0.2MB [课程四预习]spri...解读.xmi ...

  5. C# SQLite数据库操作

    WinCE项目开发   VS2008 自己写的SQLite数据库管理类代码如下: SQLiteManager.cs using System.Data; using System.Data.SQLit ...

  6. 重拾IP路由选择:CCNA学习指南中的IP路由选择

    IP路由选择技术 是网络技术的核心部分,也是目前研究的热点,其中的 动态路由选择协议 比如RIPv1,RIPv2,OSPF等,解决了数据在网络中转递的诸多问题. 在TCP/IP协议详解的学习过程中,我 ...

  7. UVa 1151 买还是建

    https://vjudge.net/problem/UVA-1151 题意: 平面上有n个点,你的任务是让所有n个点连通.为此,你可以新建一些边,费用等于两个端点的距离平方和.另外还有q个套餐可以购 ...

  8. MYSQL语句:创建、授权、查询、修改、统计分析等 一 用户的创建、权限设置、删除等

    MYSQL语句:创建.授权.查询.修改.统计分析.. 一.用户的创建.权限设置.删除等 1.首先链接MySQL操作 连接格式:mysql -h 主机地址 -u 用户名 -p 用户密码 (注-u与roo ...

  9. Python的collections模块中的OrderedDict有序字典

    如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序. ? 1 2 3 4 5 6 d = OrderedDict() d['a'] = 1 d['b'] = 10 d['c'] = 8 f ...

  10. go 并发 demo

    两个进程执行两个goroutine // This sample program demonstrates how to create goroutines and // how the schedu ...