poj 1062"错误“代码
来源:互联网 发布:linux chgrp 编辑:程序博客网 时间:2024/06/06 20:17
这道题就是Dijkstra算法的变形,枚举等级就行了,例如酋长的等级是5,M = 2 则枚举3~5,4~6,5~7就OK了,但是,我测遍Discuss区的数据,还是WA了。。最后看到了一条“这道题的数据有问题,有些wa的程序A了,有些能A的程序WA了。。。”稍微有点心安理得。。但是还是有可能自己的程序有问题,希望有大牛能指出
代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define INF 99999999using namespace std;struct Node{ int cla; int price;};Node node[101];int mat[101][101];bool visited[101];int dist[101];int M,n;void Dijkstra(int clas1,int clas2){ int min; for(int i = 1; i<=n; i++) { dist[i] = INF; if(mat[1][i] < INF && node[i].cla >= clas1 && node[i].cla <= clas2) dist[i] = mat[1][i] + node[i].price; visited[i] = false; } visited[1] = true; for(int i = 1 ; i < n ; i++) { min = INF; int flag = -1; for(int j = 1 ; j <= n ; j++) { if(!visited[j] && dist[j] < min) { min = dist[j]; flag = j; } } if(flag == -1) return; visited[flag] = true; for(int j = 1 ; j <= n; j ++) { if(!visited[j] && node[j].cla >= clas1 && node[j].cla <= clas2) { if(mat[flag][j] < INF && dist[j] > dist[flag] - node[flag].price + node[j].price + mat[flag][j]) dist[j] = dist[flag] - node[flag].price + node[j].price + mat[flag][j]; } } //cout<<flag<<' '<<dist[flag]<<endl; }}int main(){ scanf("%d%d",&M,&n); int p,l,x; int t,v; for(int i = 1 ; i <= n ; i++) for(int j = 1 ; j <= n ; j++) mat[i][j] = INF; for(int i = 1 ; i <= n ; i++) { scanf("%d%d%d",&node[i].price,&node[i].cla,&x); mat[i][i] = 0; for(int j = 1 ; j <= x ; j++) { scanf("%d%d",&t,&v); mat[i][t] = v; } } int clas1,clas2; int Min = INF; for(int i = 0 ; i <= M; i++) { clas1 = node[1].cla - M + i; clas2 = clas1 + M; memset(visited,false,sizeof(visited)); Dijkstra(clas1,clas2); for(int i = 1 ; i <= n ; i++) { //cout<<dist[i]<<' '; if(Min > dist[i]) Min = dist[i]; } } cout<<Min<<endl; return 0;}
- poj 1062"错误“代码
- POJ常见错误类型
- POJ错误类型
- POJ 常见错误类型
- POJ编译错误
- 【代码】POJ 2762
- 【代码】POJ 2942
- 【代码】POJ 3352
- 【代码】POJ 2723
- 【代码】POJ 2749
- 【代码】POJ 3207
- 【代码】POJ 3648
- 【代码】POJ 3678
- 【代码】POJ 3683
- poj 1001 代码
- poj 1001代码实现
- 搞笑的代码错误
- 邮件错误基本代码
- Unix/Linx 文件I/O的一些小思考
- PHP 传值时,要对+ 号进行处理
- HDU1210---Eddy's 洗牌问题 HDU(89)
- sqlplus常用命令
- 两天没更新了
- poj 1062"错误“代码
- [Oracle] SQL*Loader 详细使用教程(3)- 控制文件
- Stanford Algorithms: Design and Analysis, Part 1[week 6]
- nodejs的总结
- -------
- SQL Server 2008阻止保存要求重新创建表的更改的解决
- 查找峰值点,求相关
- hdu 4578——Transformation
- (Ext基础篇) 表单与输入控件