http://poj.org/problem?id=1062

一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了。

看了别人的博客后,我还是不是很理解所谓的枚举等级是怎样枚举,因为我觉得在递归的时候,我真的不知道怎么枚举等级。

然后今天在看到了一个人写的,枚举等级怎么枚举,我才发现我用那个搜索写的话,我还是有问题。所以我就用这个新学的dijkstra写

所谓的枚举等级,就是以每一个等级都视为最低等级来进行枚举。

比如等级限制1,而那个酋长的等级是3,那么你就应该枚举2-4,和3-5的等级的人。

 #include <stdio.h>
#include <string.h> #define inf 9999999 int m,n;
int price[],d[];
int graph[][];
int rank[];
bool mark[],limit[]; int dijkstra()
{
int result = inf;
int k,dis;
memset(mark,false,sizeof(mark));
d[ ] = ;
for(int i = ; i <= n ; i++)
d[ i ] = inf;
for(int i = ; i <= n ; i++) //dijkstra是这个循环
{
k = ;
dis = inf;
for(int j= ; j <= n ;j++)
if(!mark[ j ] && d[ j ] <= dis && limit[ j ])
{
k = j;
dis = d[ j ];
}
mark[ k ] = true;
for(int j = ; j <= n ; j++)
{
if(limit[ j ] && d[ j ] > d[ k ] + graph[ k ][ j ])
d[ j ] = d[ k ] + graph[ k ][ j ];
}
}
for(int i = ;i <= n ;i++)
{
d[ i ] += price[ i ]; //d[i] 是存储着交换i次后的价钱。
if(d[ i ] < result)
result = d[ i ];
}
return result;
} int main()
{
int x,t,v,ans = inf;
scanf("%d%d",&m,&n);
for(int i = ; i <= n ; i++) //进行构图。
for(int j = ;j <= n ; j++)
if( i == j )
graph[ i ][ j ] = ;
else
graph[ i ][ j ] = inf;
for(int i = ; i <= n ; i++)
{
scanf("%d%d%d",&price[i],&rank[i],&x);
for(int j = ; j < x ; j++)
{
scanf("%d%d",&t,&v);
graph[ i ][ t ] = v;
}
}
for(int i = ; i <= m ; i++) //这里就是枚举等级,把可以和酋长交换的人进行标记,然后进行最短路的寻找。
{
memset(limit,,sizeof(limit));
for(int j = ; j <= n ; j++)
if(rank[ j ] >= rank[ ] - m + i && rank[ j ] <= rank[ ] + i)
limit[ j ] = true;
t = dijkstra();
if(ans > t)
ans = t;
}
printf("%d\n",ans);
return ;
}

POJ 1062 ( dijkstra )的更多相关文章

  1. 昂贵的聘礼 - poj 1062 (Dijkstra+枚举)

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39976   Accepted: 11596 Description 年 ...

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

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

  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. 最短路POJ 1062 昂贵的聘礼

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

  6. (最短路 dijkstra)昂贵的聘礼 -- poj -- 1062

    链接: http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

  7. poj 1062 昂贵的聘礼 (dijkstra最短路)

    题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  8. POJ 1062 昂贵的聘礼(带限制条件的dijkstra)

    题目网址:http://poj.org/problem?id=1062 题目: 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submis ...

  9. POJ 1062 昂贵的聘礼(Dijkstra)

    题意 : 真真是做POJ第一次遇到中文题,好吧,虽然语言通了,我一开始也没看懂样例什么意思,题意的话就是说这个探险家想娶酋长的女儿,但是没有钱,酋长说他可以用祭司的水晶球或者皮袄来换取少花一部分钱,同 ...

随机推荐

  1. 异步编程中的最佳做法(async await)

    阅读1:http://blog.csdn.net/nacl025/article/details/9163495 阅读2:http://www.cnblogs.com/x-xk/archive/201 ...

  2. 新浪微博客户端(50)-解决输入Emotion表情逐渐变小的问题

    UITextView+Extension.h #import <UIKit/UIKit.h> @interface UITextView (Extension) /** 插入属性文本 */ ...

  3. android-android获取navigationview 上的控件id

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); View headerView = navi ...

  4. Kafka入门经典教程

      本帖最后由 desehawk 于 2015-5-3 00:45 编辑问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程 ...

  5. c# 日期函数[string.Format----GetDateTimeFormats]格式 .【转帖备查】

    DateTime dt = DateTime.Now;Label1.Text = dt.ToString();//2005-11-5 13:21:25Label2.Text = dt.ToFileTi ...

  6. sql server 日期相关操作

    ), ): ), ): :57AM ), ): ), ): ), ): ), ): ), ): ), ): ), ): , ), ): :: ), ): :::827AM ), ): ), ): ), ...

  7. php对uploads文件的处理问题的解决

    解决uploads问题的要点有几点: 参考这篇文章 第一, 在php.ini文件中, 有file_uploads这一节 file_uploads = On ;是否开启文件上传功能, 该功能有很大的安全 ...

  8. array_fill 用给定的值填充数组

    转自:http://www.phpstudy.net/php/165.html PHP array_fill 用给定的值填充数组 array_fill (PHP 4 >= 4.2.0, PHP ...

  9. admin site

    基本步骤: 1.添加 'django.contrib.admin' 到 INSTALL_APP 设置中. 2.再添加四个依赖项: 'django.contrib.auth', 'django.cont ...

  10. 【AngularJS】—— 9 自定义过滤器

    AngularJS另一个特点就是提供了过滤器,可以通过操作UNIX下管道的方式,操作数据结果. 通过使用管道,可以便于双向的数据绑定中视图的展现. 过滤器在处理过程中,将数据变成新的格式,而且可以使用 ...