poj 1062 昂贵的聘礼【条件约束----最短路】
来源:互联网 发布:刷新快捷键 mac 编辑:程序博客网 时间:2024/06/14 07:41
这个题寒假的时候就遇见了--一直不会写--
题目链接:1062
汉语题--题意就不说了---
就相当于从0点到1点的最短距离---
从0点到(1-n)点的距离都有--
1-n点之间有一些路(单向路)
有一个约束条件M
即在最短路上最大的等级与最小的等级之差小于等于M---
点就100个
我们枚举枚举一个最大等级--求出在每一个最大等级所满足的条件下的最短路--
时间复杂度O(N^3)
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m;int deep[120];int map[120][120];int dis[120];bool fafe[120],val[120];void init(){for (int i=0;i<=n;i++)for (int j=0;j<=n;j++)map[i][j]=1111111111;}int disk(){memset(fafe,true,sizeof(fafe));for (int i=1;i<=n;i++)if (val[i]) dis[i]=map[0][i];else dis[i]=1111111111;while (1){int mi=1111111112,ii;for (int i=1;i<=n;i++)if (fafe[i]&&mi>dis[i])mi=dis[i],ii=i;if (ii==1) return mi;fafe[ii]=false;if (val[ii])for (int i=1;i<=n;i++)if (val[i]&&fafe[i]&&dis[i]>map[ii][i]+dis[ii])dis[i]=map[ii][i]+dis[ii];}}int main(){int a,b,k;scanf("%d%d",&m,&n);init();for (int i=1;i<=n;i++){scanf("%d%d%d",&a,&deep[i],&k);map[0][i]=a;while (k--){scanf("%d%d",&a,&b);map[a][i]=b;}}int ans=1111111111;for (int i=1;i<=n;i++){int ma=deep[i];for (int j=1;j<=n;j++){if (deep[j]>ma||ma-deep[j]>m)val[j]=false;elseval[j]=true;}int ss=disk();ans=min(ss,ans);}printf("%d\n",ans);return 0;}
0 0
- poj 1062 昂贵的聘礼【条件约束----最短路】
- POJ 1062 昂贵的聘礼-条件最短路(SPFA)
- poj 1062 昂贵的聘礼(最短路)
- POJ 1062 昂贵的聘礼 最短路
- poj 1062昂贵的聘礼 最短路
- poj 1062 昂贵的聘礼(最短路)
- POJ 1062 昂贵的聘礼 最短路
- POJ 1062 昂贵的聘礼 最短路
- POJ 1062 昂贵的聘礼【经典的最短路问题】
- poj 1062 昂贵的聘礼 (有限制的最短路)
- POJ 1062 昂贵的聘礼(限制的最短路)
- poj 1062(最短路——昂贵的聘礼)
- (最短路 + 枚举) poj 1062 昂贵的聘礼
- POJ 1062 昂贵的聘礼 最短路枚举等级限制
- poj 1062 昂贵的聘礼 最短路
- POJ 1062 昂贵的聘礼 (最短路 Dijkstra)
- POJ 1062昂贵的聘礼(dijk最短路)
- POJ训练计划1062_昂贵的聘礼(最短路)
- C++ 11运算符重载简介
- iOS渐变和自定义圆角的实现
- LeetCode OJ(3.Longest Substring Without Repeating Characters)
- current_date
- ActionBar上添加搜索功能
- poj 1062 昂贵的聘礼【条件约束----最短路】
- ASP.NET简单实现APP中用户个人头像上传和裁剪
- SUBSTRB(c1,n1[,n2])
- QEMU KVM Libvirt手册(5) – snapshots
- Togaf视频
- nim博弈_______Crazy Calendar( lightoj 1393 )
- SOUNDEX(c1)
- RTRIM(c1,[,c2])
- 当前心血管疾病大数据研究的挑战