poj 1062 昂贵的聘礼
2010-07-17 13:29
351 查看
http://162.105.81.212/JudgeOnline/problem?id=1062
一个特别要注意的就是题目里描述的"等级制度", 可以枚举
最小花费用的dijkstra算法求的, 在初始化dist[]数组时要注意,是否允许他们交易
dijkstra算法都好久没写了, 照着书本写的- -
一个特别要注意的就是题目里描述的"等级制度", 可以枚举
for(j=1; j<=n; j++) if(lev[j] >= lev[1] - m + i && lev[j] <= lev[1] + i)//枚举等级允许范围的结点 limit[j] = 1;
最小花费用的dijkstra算法求的, 在初始化dist[]数组时要注意,是否允许他们交易
for(i=1; i<=n; i++) { if(limit[i]) dist[i] = map[1][i]; else dist[i] = INF; visted[i] = 0; }
dijkstra算法都好久没写了, 照着书本写的- -
#include<iostream>
using namespace std;
#define INF 0x7ffffff
#define MAX 101
int map[MAX][MAX], value[MAX], lev[MAX], dist[MAX];
int m, n;
bool limit[MAX], visted[MAX];
//dijkstra求最短路径, dist[i]表示始点(1)到i点的花费
int dijkstra()
{
int i, j, k, mindist;
for(i=1; i<=n; i++) { if(limit[i]) dist[i] = map[1][i]; else dist[i] = INF; visted[i] = 0; }
dist[1] = 0;
for(i=1; i<=n; i++)
{
mindist = INF;
//选取最小的dist值
for(j=1; j<=n; j++)
{
if(!visted[j] && limit[j] && dist[j] < mindist)
{
k = j;
mindist = dist[j];
}
}
visted[k] = 1;
//更新所有未访问节点的dist值
for(j=1; j<=n; j++)
{
if(!visted[j] && limit[j])
if(map[k][j] < INF && dist[k] + map[k][j] < dist[j])
dist[j] = dist[k] + map[k][j];
}
}
mindist = INF;
for(i=1; i<=n; i++)
{
dist[i] += value[i];
if(dist[i] < mindist)
mindist = dist[i];
}
return mindist;
}
int main()
{
int i, j, t, tmp, min;
while(scanf("%d%d", &m, &n) != EOF)
{
//构图
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
map[i][j] = i==j?0:INF;
for(i=1; i<=n; i++)
{
scanf("%d%d%d", &value[i], &lev[i], &t);
for(j=1; j<=t; j++)
{
scanf("%d", &tmp);
scanf("%d", &map[i][tmp]);
}
}
min = value[1];
for(i=0; i<=m; i++)
{
memset(limit, 0, sizeof(limit));
for(j=1; j<=n; j++) if(lev[j] >= lev[1] - m + i && lev[j] <= lev[1] + i)//枚举等级允许范围的结点 limit[j] = 1;
tmp = dijkstra();
if(min > tmp)
min = tmp;
}
printf("%d/n", min);
}
return 0;
}
相关文章推荐
- POJ 1062 昂贵的聘礼(限制的最短路)
- POJ 1062 昂贵的聘礼(预处理和dijkstra算法)(M)
- POJ 1062 昂贵的聘礼(最短路径Dijkstr的变形)
- POJ_1062 昂贵的聘礼 Dijkstra
- poj 1062 昂贵的聘礼 【枚举 + dijkstra】
- poj 1062 昂贵的聘礼
- POJ 1062 昂贵的聘礼
- POJ 1062 (nyoj - 510)昂贵的聘礼
- poj 1062 昂贵的聘礼
- SPFA算法模板例题[POJ1062]-昂贵的聘礼
- POJ 1062 昂贵的聘礼
- POJ 1062 昂贵的聘礼
- poj 1062 昂贵的聘礼
- poj 1062 昂贵的聘礼 枚举+最短路
- poj1062-昂贵的聘礼(最短路径问题)
- poj1062 昂贵的聘礼interesting-
- POJ1062 昂贵的聘礼(最短路)
- POJ 1062昂贵的聘礼(dijk最短路)
- poj 1062 昂贵的聘礼
- poj 1062 昂贵的聘礼(最短路)