首页 > 代码库 > poj 1062 昂贵的聘礼 最短路 dijkstra
poj 1062 昂贵的聘礼 最短路 dijkstra
#include <cstdio>#include <cmath>#include <cstring>#include <ctime>#include <iostream>#include <algorithm>#include <set>#include <vector>#include <sstream>#include <queue>#include <typeinfo>#include <fstream>typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define maxn 101const int inf=0x7fffffff; //无限大int m,n;int price[maxn][maxn];int lv[maxn];int x[maxn];int dist[maxn];int visit[maxn];void init(){ memset(price,0,sizeof(price)); memset(lv,0,sizeof(lv)); memset(dist,inf,sizeof(dist)); memset(visit,0,sizeof(visit)); cin>>m>>n; for(int i=1;i<=n;i++) { cin>>price[0][i]>>lv[i]>>x[i]; for(int j=1;j<=x[i];j++) { int t,u; cin>>t>>u; price[t][i]=u; } }}int dijkstra(){ int node; int sd; int i,j; for(i=1;i<=n;i++) dist[i]=price[0][i]; for(i=1;i<=n;i++) { node=0; sd=inf; for(j=1;j<=n;j++) { if(!visit[j]&&sd>dist[j]) { sd=dist[j]; node=j; } } if(node==0) break; visit[node]=1; for(j=1;j<=n;j++) { if(!visit[j]&&price[node][j]>0 && dist[j]>dist[node]+price[node][j]) dist[j]=dist[node]+price[node][j]; } } return dist[1];}int main(){ init(); int temp_price; int maxlv; int minprice=inf; for(int i=1;i<=n;i++) { maxlv=lv[i]; for(int j=1;j<=n;j++) { if(lv[j]>maxlv||maxlv-lv[j]>m) visit[j]=1; else visit[j]=0; } temp_price=dijkstra(); if(minprice>temp_price) minprice=temp_price; } cout<<minprice<<endl; return 0;}
poj 1062 昂贵的聘礼 最短路 dijkstra
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。