hdu 1224 最长路
来源:互联网 发布:js获取元素css样式 编辑:程序博客网 时间:2024/05/22 12:54
开始用dijkstra直接求,发现不行,算法问题(1-2,(30),2-4(20),1--3(10),3--4(100)最后一个点无法更新,导致错误),后用取负,加大数法也没过。
现在(寒假了):求负权的(无负环),或者最长路(一样,取负求最短),不可以dijkstra,用 spfa可以
#include<iostream> //spfa #include<cstdio>#include<cstring>#include<queue>using namespace std;int a[200][200];int point[200];int pre[200];int mark[200];int d[200];const int inf=0x3f3f3f3f;int main(){ int t; cin>>t; int i; for(int ii=1;ii<=t;ii++) { int n,m; memset(a,0x3f,sizeof(a)); memset(d,0x3f,sizeof(d)); memset(point,0,sizeof(point)); memset(pre,0,sizeof(pre)); memset(mark,0,sizeof(mark)); cin>>n; for(i=1;i<=n;i++) { scanf("%d",&point[i]); } point[n+1]=0; cin>>m; int s,l; for(i=1;i<=m;i++) { scanf("%d%d",&s,&l); a[s][l]=-point[l]; } bool flag=1; d[1]=0; int cur=1; mark[cur]=1; queue<int>q; q.push(1); while(!q.empty()) { int cur=q.front(); q.pop(); for(i=1;i<=n+1;i++) { if(mark[i]==0&&d[cur]+a[cur][i]<d[i]) //可以松弛的要入队 { q.push(i); pre[i]=cur; } if(d[cur]+a[cur][i]<d[i]) //对所有的能松弛的松弛 d[i]=d[cur]+a[cur][i]; } } if(d[n+1]==inf) //防止出现无法到达 { printf("CASE %d#\npoints : %d\n",ii,d[n+1]); printf("circuit : 1->1"); if(ii==t)cout<<endl; else cout<<endl<<endl; continue; } int bb[205];int kk=n+1;int yy=1; while(pre[kk]!=1) { bb[yy++]=pre[kk]; kk=pre[kk]; } yy--; bb[0]=1; printf("CASE %d#\npoints : %d\n",ii,-d[n+1]); printf("circuit : 1"); for(i=yy;i>=0;i--) printf("->%d",bb[i]); if(ii==t)cout<<endl; else cout<<endl<<endl; } return 0;}
- hdu 1224 最长路
- hdu 1224(最长路)
- hdu 1224 最长路+dp
- hdu 1224 Free DIY Tour(最长路/dp)
- 【数塔DP|最长路】HDU-1224 Free DIY Tour
- hdu 1224 Free DIY Tour【SPFA最长路+输出路径】
- HDU 1224 Free DIY Tour SPFA最长路
- Arbitrage hdu 1217 最长路Floyd
- hdu 2196 Computer(树上最长路)
- [HDU 1317]XYZZY[SPFA变形][最长路]
- HDU - 1317 XYZZY (floyd + 最长路)
- hdu 4123 树的最长路+RMQ
- HDU 4514并查集判环+最长路
- Hdu 3696 Farm Game(最长路)
- hdu 1317 spfa判环求最长路
- Hdu 6201 transaction transaction transaction【最长路】
- HDU 6201 树形DP 或 最长路
- 【思维-最长路】hdu 3696 Farm Game
- hibernate之HQL之group by子句
- 利用dbms_metadata.get_ddl查看DDL语句(原创)
- 简单的UDP循环服务器:时间服务器
- Harris角点检测
- Linux API -- open 设置操作属性O_APPEND时的那点小事
- hdu 1224 最长路
- Java反射之Constructor(一)
- 树状数组总结
- hibernate之HQL实体更新与删除
- 大规模超文本网络搜索引擎解析 [ The Anatomy of a Large-Scale Hypertextual Web Search Engine ]
- windows迁移linux,在文件上遇到的问题
- 华为上机笔试之通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 求m-n之间的所有素数
- c# 可空数据类型