题意:n头牛,按照编号从左到右排列,两头牛可能在一起,接着有一些关系表示第a头牛与第b头牛相隔最多与最少的距离,最后求出第一头牛与最后一头牛的最大距离是多少,如         果最大距离无限大则输出-2,如果关系不能保证则输出-1

题解:差分约束的入门题

   差分约束就是如果dis[b]-dis[a]<=c转化为a到b建一条有向边权值为c,接着求最短路就得出了两点的最大距离(最短距离都保证了,那么长一些的也可以成立),注意没有         最短路就是可能性无限,有一个负权回路就是关系不能保证,但是这个题要注意隐含条件就是需要建立每头牛一定不在前一头牛的前面这些边

#include<cstdio>
#include<cstring>
const int inf=0x3f3f3f3f;
const int maxn=;
struct Edge
{
int u,v,val;
Edge(int u,int v,int val):u(u),v(v),val(val) {}
Edge() {}
};
struct Edge bellEdge[maxn];
int dis[maxn];
void bellman(int s,int n,int m)
{
for(int i=; i<=n; ++i)
{
dis[i]=inf;
}
dis[s]=;
int flag;
for(int i=; i<n; ++i)
{
flag=;
for(int j=; j<m; ++j)
{
if(dis[bellEdge[j].u]<inf&&dis[bellEdge[j].v]>dis[bellEdge[j].u]+bellEdge[j].val)
{
dis[bellEdge[j].v]=dis[bellEdge[j].u]+bellEdge[j].val;
flag=;
}
}
if(flag)//无法再次松弛
return;
}
if(!flag&&dis[n]<inf)//最后依然可以松弛就是存在负权回路
dis[n]=-;
}
int main()
{
int n,ml,md,m;
while(~scanf("%d %d %d",&n,&ml,&md))
{
m=;
int u,v,c;
for(int i=; i<ml; ++i) //使用差分约束建立边
{
scanf("%d %d %d",&u,&v,&c);
bellEdge[m++]=Edge(u,v,c);
}
for(int i=; i<md; ++i)
{
scanf("%d %d %d",&u,&v,&c);//dis[u]-dis[v]<=-c转换为v到u的一条边权值为-c
bellEdge[m++]=Edge(v,u,-c);
}
for(int i=; i<n; ++i)
{
bellEdge[m++]=Edge(i+,i,);
}
bellman(,n,m);
if(dis[n]==inf) //无限解
{
printf("-2\n");
}
else if(dis[n]==-) //负权回路无解
{
printf("-1\n");
}
else
{
printf("%d\n",dis[n]);
}
}
return ;
}

POJ - 3169 差分约束的更多相关文章

  1. poj Layout 差分约束+SPFA

    题目链接:http://poj.org/problem?id=3169 很好的差分约束入门题目,自己刚看时学呢 代码: #include<iostream> #include<cst ...

  2. poj 3159(差分约束经典题)

    题目链接:http://poj.org/problem?id=3159思路:题目意思很简单,都与给定的条件dist[b]-dist[a]<=c,求dist[n]-dist[1]的最大值,显然这是 ...

  3. poj 1201 差分约束

    http://www.cnblogs.com/wangfang20/p/3196858.html 题意: 求集合Z中至少要包含多少个元素才能是每个区间[ai,bi]中的元素与Z中的元素重合个数为ci. ...

  4. POJ 1201 差分约束+SPFA

    思路: 差分约束,难在建图.(我是不会告诉你我刚学会SPFA的...) 把每个区间的ai–>bi连一条长度为ci的边. k–>k+1连一条长度为0的边. k+1–>k连一条长度为-1 ...

  5. POJ 1201 差分约束(集合最小元素个数)

    题意:       给你一个集合,然后有如下输入,a ,b ,c表示在范围[a,b]里面有至少有c个元素,最后问你整个集合最少多少个元素. 思路:       和HDU1384一模一样,首先这个题目可 ...

  6. poj 1716 差分约束

    水水的. 给几个不等式:dis[b]-dis[a]>=2;  0<=dis[i+1]-dis[i]<=1; #include<iostream> #include< ...

  7. poj 3159 差分约束

    思路:班长的糖果要比snoopy的多.并且要用手写堆栈,且堆栈的大小要开到20000000. #include<iostream> #include<cstdio> #incl ...

  8. poj 1364 差分约束

    思路:设dis[i]为从0点到第i点的序列总和.那么对于A B gt  k 来讲意思是dis[B+A]-dis[A]>k; 对于A B lt k来讲就是dis[B+A]-dis[A]<k; ...

  9. poj 2983 差分约束

    思路: 设dis[i]为标号为i的点到0号点的距离.对于P A B X,我们能得到等式dis[a]-dis[b]=x,那么可以化为两个不等式dis[a]-dis[b]>=x和dis[b]-dis ...

随机推荐

  1. linux下安装mysql(mariadb)

    yum安装软件(官网很慢) yum install mariadb 发现版本如下,版本特别低,且安装包特别小, mariadb x86_64 :-.el7_5 base 8.9 M .我们可以配置ma ...

  2. (3.14) set statistics io/time/profile /SET SHOWPLAN_ALL ON详解统计信息与执行计划

    SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON  执行计划详细描述请参考(读懂执行计划) 对于语句的运行,除了执行计划本身,还有一些其他 ...

  3. wordpress 主题开发

    https://yusi123.com/3205.html https://themeshaper.com/2012/10/22/the-themeshaper-wordpress-theme-tut ...

  4. Jmeter(十)Linux下配置安装Jmeter及执行测试任务

    一.安装JDK7.0版本 1.先卸载服务器自带的jdk软件包 # java -version #查看服务器是否安装过 # rpm -qa |grep gcj #查看服务器安装的jdk软件包信息 # y ...

  5. Java队列存储结构及实现

    一.队列(Queue) 队列是一种特殊的线性表,它只允许在表的前段(front)进行删除操作,只允许在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头. 对于一个队 ...

  6. MFC程序执行过程剖析

    一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...

  7. Mybatis中的#与$的区别

    一.对比场景 场景:数据库分表时,需要将分表的表序号传入的sql中. SpringBoot中使用注解如下: @Insert("insert into collect_#{tblNum}(id ...

  8. java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@27ce24aa is still active. No statements may be issued when any streaming result sets are open and in use on a given connection

    在Sqoop往mysql导出数据的时候报了这个错误,一开始还以为是jar包没有打进去或者打错位置了,未解便上网查询. Error reading from database: java.sql.SQL ...

  9. Maven打包部署

    Maven打Jar包 问题一 Eclipse突然SB告诉我类不存在还让我导包进来O__O "…,但是我明明有这个类.这是不要慌,通过在网上搜索得知:由于eclipse的编译是基于时间戳的判断 ...

  10. Spring自动装配Bean的五种方式

    在Spring中,支持 5 自动装配模式. no – 缺省情况下,自动配置是通过“ref”属性手动设定,在项目中最常用byName – 根据属性名称自动装配.如果一个bean的名称和其他bean属性的 ...