题目大意:中文题,不多解释。。。。
解题思路:dijkstra,结点就是物品的编号,边权就是优惠之后的价格。
但需要注意的是还有个等级限制,我用的大牛的思路,即枚举等级区间,假如这个酋长的等级为5,而交易等级限制为2,则需要枚举的区间为(3,4,5) (4,5,6)(5,6,7)分别再找出整个图中符合区间段的子图,在子图中使用dijkstra
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100+10;
const int INF=(1<<30);
int level[maxn],x,limit[maxn],val[maxn];
int Map[maxn][maxn],dis[maxn],path[maxn],m,n,vis[maxn];
void init()
{
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
if(i!=j) Map[i][j]=INF;
else Map[i][j]=0;
}
int Dijkstra(int src)
{
int result=INF;
int i,j,minn,pos;
memset(vis,0,sizeof(vis));
for(i = 1; i<=n; i