poj1062
来源:互联网 发布:怎样申请开淘宝网店 编辑:程序博客网 时间:2024/06/05 07:51
也是看了别人的讲解才懂得 之前 将1 作为源点 有点蠢 然后枚举路线也没想出来 之前总是想 在算的时候维持一条正确的路线 但是好难啊 以后要换换思路 将可能的源点列出来 把不合适的路线当作访问过 不对他优化 也不会找到他 然后再跑 就可以了 所以代码是
#include <iostream>#include <cstdio>#include <cstring>#define MAXN 101#define inf (1<<30)using namespace std;int m,n,r[MAXN][MAXN],level[MAXN],price[MAXN],d[MAXN];bool visi[MAXN];void read(){ memset(r,0,sizeof(r)); scanf("%d %d",&m,&n); int x,y,tp; for(int i=1;i<=n;++i) { scanf("%d %d %d",&price[i],&level[i],&x); r[0][i]=price[i]; d[i]=inf; for(int j=1;j<=x;++j) { scanf("%d %d",&y,&tp); r[y][i]=tp; } }}int dij(){ for(int i=1;i<=n;++i) d[i]=price[i]; for(int j=1;j<=n;++j) { int x=0,u=inf; for(int i=1;i<=n;++i) if(!visi[i]&&d[i]<u) u=d[x=i]; if(x==0) break; visi[x]=true; for(int i=1;i<=n;++i) if(!visi[i]&&r[x][i]>0) d[i]=min(d[i],d[x]+r[x][i]); } return d[1];}int main(){ read(); int temp=inf,ans=inf; for(int i=1;i<=n;++i) { for(int j=1;j<=n;++j) { if(level[i]<level[j]||level[i]-level[j]>m) visi[j]=true; else visi[j]=false; } temp=dij(); ans=min(temp,ans); } cout<<ans<<endl; return 0;}
0 0
- poj1062
- poj1062
- poj1062
- POJ1062
- poj1062
- poj1062
- poj1062
- poj1062
- POJ1062
- POJ1062
- poj1062
- poj1062
- poj1062
- poj1062
- poj1062
- POJ1062
- poj1062
- poj1062
- Linux查看程序端口占用情况
- 已知宽为屏幕的30%,高度未知,用css画个圆
- CommonJS和AMD/CMD!
- 自定义view
- Handler 的定义
- poj1062
- Android设置Selector不同状态下颜色及图片
- 响应式与移动端(一):万事俱备了吗?
- New Year Transportation(CoderForces A)
- js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
- 机器学习--周志华
- 第十五章 字符串
- 15章课后作业4
- 15章 上机4