昂贵的聘礼

点击打开链接

题意:略

解析:枚举等级,Dijkstra

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

const int maxn = 1005;
#define INF 0xfffffff

int mapp[ maxn ][ maxn ], num[ maxn ][ maxn ], vis[ maxn ], dis[ maxn ], leaval[ maxn ];
int m, n, a, b, c, k1, ans;

struct node{
	int p, l, x;
}edge[ maxn ];

void Dijkstra(){
	ans = edge[ 1 ].p;
	for( int x = 1; x <= k1; ++x ){
		int Min = leaval[ x ] - m;
		int Max = leaval[ x ];
		if( edge[ 1 ].l < Min || edge[ 1 ].l > Max )
			continue;
		memset( vis, 0, sizeof( vis ) );
		for( int i = 0; i <= n; ++i ){
			dis[ i ] = INF;
		}
	//	vis[ 1 ] = 1;
		dis[ 1 ] = 0;
		for( int i = 1; i <= n; ++i ){
			int temp = INF, k;
			for( int j = 1; j <= n; ++j ){
				if( !vis[ j ] &&( temp > dis[ j ] ) && edge[ j ].l >= Min && edge[ j ].l <= Max ){
					temp = dis[ k = j ];
				}
			}
			if( temp == INF )
				break;
			vis[ k ] = 1;
			for( int j = 1; j <= n; ++j ){
				if( !vis[ j ] && dis[ j ] > dis[ k ] + num[ k ][ j ] && edge[ j ].l >= Min && edge[ j ].l <= Max ){
					dis[ j ] = dis[ k ] + num[ k ][ j ];
				}
			}
		}
		for( int i = 1; i <= n; ++i ){
			dis[ i ] += edge[ i ].p;
		}
		for( int i = 1; i <= n; ++i ){
			if(	dis[ i ] < ans ){
				ans = dis[ i ];
			}
		}
	}
	printf( "%d\n", ans );
}

int main(){
	while( scanf( "%d%d", &m, &n ) != EOF ){
		for( int i = 0; i <= n; ++i ){
			for( int j = 0; j <= n; ++j ){
				num[ i ][ j ] = INF;
			}
		}
		k1 = 1;
		for( int i = 1; i <= n; ++i ){
			scanf( "%d%d%d", &a, &b, &c );
			edge[ i ].p = a;
			edge[ i ].l = b;
			edge[ i ].x = c;
			leaval[ k1++ ] = b;
			for( int j = 1; j <= c; ++j ){
				scanf( "%d%d", &a, &b );
				num[ i ][ a ] = b;
			}
		}
		Dijkstra();
	}
	return 0;
}
时间: 2024-10-05 23:18:48

昂贵的聘礼的相关文章

POJ - 1062昂贵的聘礼最短路或者DFS

POJ - 1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如

昂贵的聘礼(最短路)

Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5000金币就行了."探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格.探险家于是又跑到其他地方,其他人也提出了类似的要求

POJ 1062 昂贵的聘礼 最短路

Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5000金币就行了."探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格.探险家于是又跑到其他地方,其他人也提出了类似的要求

poj 1062 -- 昂贵的聘礼

昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35515   Accepted: 10163 Description 年 轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿 不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要 5

POJ1062 昂贵的聘礼 【DFS】

昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37475   Accepted: 10816 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币.便请求酋长减少要求.酋长说:"嗯,假设你能够替我弄到大祭司的皮袄,我能够仅仅要8000金币.假设你能够弄来他的水晶球,那么仅仅要50

POJ 1062:昂贵的聘礼

昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40715   Accepted: 11839 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5000

poj1062昂贵的聘礼(Dijkstra**)

1 /* 2 题意: 物主有一个物品,价值为P,地位为L, 以及一系列的替代品Ti和该替代品所对应的"优惠"Vi 3 g[u][i] 表示的是u物品被i物品替换后的优惠价格!(u>0, i>0) 4 g[u][0]表示不用替换该物品的实际价格 ! 5 d[0]表示的是第一个物品经过一系列的物品替换之后的最少优惠价格! 6 7 思路:每当我们通过Dijkstra算法得到离源点(1)最近的距离的节点 p的时候(也就是1...pre[p], p)这条 8 路径上的物品互相替换后得

poj 1062 昂贵的聘礼 解题报告

题目链接:http://poj.org/problem?id=1062 这一题只要想到如何建图,就不太难解决了.假设对于编号为 i 的物品,如果它得到物品 j 后价格从 pricei 降低到 pricej 的话,就用一个cost[i][j] = pricej.也就是从物品 i 到物品 j 连一条有向边.每一个编号的物品都这样处理,然后套用dijk 算法,求出从每个点出发的最短路,最终最小的那个就是答案.考虑到等级限制,别人可以跟酋长接触的前提是这个人的等级在 [ level 酋长-m  ~ le

POJ1062昂贵的聘礼[最短路建模]

昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45892   Accepted: 13614 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5000

poj 1062 昂贵的聘礼 Dijkstra算法,中等难度,,,一道让我累觉不爱的题目

昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38474   Accepted: 11132 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5000