开始用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 最长路的更多相关文章

  1. hdu 1224 Free DIY Tour(最长的公路/dp)

    http://acm.hdu.edu.cn/showproblem.php? pid=1224 基础的求最长路以及记录路径. 感觉dijstra不及spfa好用,wa了两次. #include < ...

  2. HDU 6201 2017沈阳网络赛 树形DP或者SPFA最长路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6201 题意:给出一棵树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过 ...

  3. HDU 6201 transaction transaction transaction(拆点最长路)

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  4. hdu 1534(差分约束+spfa求最长路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1534 思路:设s[i]表示工作i的开始时间,v[i]表示需要工作的时间,则完成时间为s[i]+v[i] ...

  5. [HDU 1317]XYZZY[SPFA变形][最长路]

    题意: 一个图, 点权代表走到该点可获得的能量值. 可正可负. 一个人从1 号出发,带有100点能量. 问是否有一种方案可使人在能量值>0的时候走到n. 思路: 这个题首先要注意点权. 其实就是 ...

  6. hdu 4123 树的最长路+RMQ

    Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. HDU 2196 Computer (树上最长路)【树形DP】

    <题目链接> 题目大意: 输出树上每个点到其它点的最大距离. 解题分析: 下面的做法是将树看成有向图的做法,计算最长路需要考虑几种情况. dp[i][0] : 表示以i为根的子树中的结点与 ...

  8. HDU.1529.Cashier Employment(差分约束 最长路SPFA)

    题目链接 \(Description\) 给定一天24h 每小时需要的员工数量Ri,有n个员工,已知每个员工开始工作的时间ti(ti∈[0,23]),每个员工会连续工作8h. 问能否满足一天的需求.若 ...

  9. HDU - 6201:transaction transaction transaction(最长路)

    Kelukin is a businessman. Every day, he travels around cities to do some business. On August 17th, i ...

随机推荐

  1. eclipse 在写XML时 包类名自动提醒的问题

    需要加一个STS插件 配置很简单 参考了  https://blog.csdn.net/HH775313602/article/details/70176531 在 https://spring.io ...

  2. 编写shellcode的几种姿势

    今天开始在做hitcon-training的题目,做到lab2就发现了自己的知识盲区,遇到无法执行shell的情况,需要自己打shellcode执行cat flag 操作 经过一系列的搜索,发现了几种 ...

  3. Bootstrap select(选择列表)

    当您想让用户从多个选项中进行选择,但是默认情况下只能选择一个选项,则使用选择框 1.使用<select>展示列表选项 2.使用multiple="multiple"允许 ...

  4. Spring根据XML配置文件 p名称空间注入属性(property后出现,简便但只针对基本数据类型管用,自定义集合等引用类型无效)

    要生成对象并通过名称空间注入属性的类 代码如下: package com.swift; public class User { private String userName; public void ...

  5. 【离线做法 树状数组】luoguP1972 [SDOI2009]HH的项链

    与bzoj3585: mex的线段树做法有着异曲同工之妙 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...

  6. **没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案

    一.现象 我将之前Redhat9.0编译好的uboot,转到ubuntu12.04环境.在ubuntu环境下对 uboot重新编译提示错误.编译过程如下: root@hailin-virtual-ma ...

  7. vmalloc_init

    /* linux/mm/vmalloc.c*/ struct vmap_area { unsigned long va_start; unsigned long va_end; unsigned lo ...

  8. Linux下安装Oracle客户端

    1.创建用户名和组名 /usr/sbin/groupadd oinstall /usr/sbin/groupadd dba /usr/sbin/useradd -m -g oinstall -G db ...

  9. Exchange 邮件服务器内存硬盘估算

  10. ZingChart 图表插件

    ZingChart提供了一个丰富的API,用于通过重新绘制绘图(重新加载) ,加载新数据(setseriesdata),修改现有图表(modifyplot), 放大数据范围(zoomto),切换各种交 ...