题意:一些牛按序号排成一条直线,有两种要求,A和B距离不得超过X,还有一种是A和B距离不得少于Y,问1和N可能的最大距离。

和poj那题一样,就是多了多组数据。

 #include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
#define INF 2000000007
#define N 1007
#define M 10007
using namespace std; int n,l,r;
int dis[N],num[N],ins[N];
int cnt,head[N],Next[M*],rea[M*],val[M*]; void add(int u,int v,int fee)
{
Next[++cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
val[cnt]=fee;
}
bool Spfa()
{
for (int i=;i<=n;i++)
ins[i]=,dis[i]=INF,num[i]=;
queue<int>q;
q.push();dis[]=,num[]=;
while(!q.empty())
{
int u=q.front();q.pop();
for (int i=head[u];i!=-;i=Next[i])
{
int v=rea[i],fee=val[i];
if (dis[v]>dis[u]+fee)
{
dis[v]=dis[u]+fee;
if (!ins[v])
{
num[v]++;
ins[v]=;
q.push(v);
if (num[v]>n) return false;
}
}
}
ins[u]=;
}
return true;
}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
cnt=;
memset(head,-,sizeof(head));
scanf("%d%d%d",&n,&l,&r);
for (int i=,x,y,z;i<=l;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
for (int i=,x,y,z;i<=r;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(y,x,-z);
}
for (int i=;i<=n;i++)
add(i+,i,);
bool flag=Spfa();
if (!flag) printf("-1\n");
else
{
if (dis[n]==INF) printf("-2\n");
else printf("%d\n",dis[n]);
}
}
}

最新文章

  1. Windows Server 2012 NIC Teaming介绍及注意事项
  2. Python PIP安装
  3. .NET面试题系列[14] - LINQ to SQL与IQueryable
  4. WMSWebServiceExtension 使用,支持压缩
  5. sed实例精解--例说sed完整版
  6. hdu 4747 Mex
  7. vs 2010 中类文文件模板的修改
  8. DispatcherServlet中使用的特殊的Bean
  9. c++ 进程权限的提升
  10. HTML XML XHTML DHTML区别与联系
  11. android--使用Struts2服务端与android交互
  12. Struts2图片文件上传,判断图片格式和图片大小
  13. Visual Studio 2012中使用Zen Coding,写html的神器!
  14. 解析Properties文件
  15. Quartz+log4net实现控制台程序定时运行,并且记录日志
  16. zend framework 1.10项目配置与经典hello world
  17. MyBatis 的小细节问题
  18. div中内容无法自动换行问题
  19. Overlapping rectangles判断两个矩形是否重叠的问题 C++
  20. 简述servlet

热门文章

  1. Android Dialogs(5)[正常显示dlg,将Fragment显示为dialog,将Aty显示为dlg,嵌入],关闭Dialog
  2. 222 Count Complete Tree Nodes 完全二叉树的节点个数
  3. 基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)
  4. SpringBoot2.1.3修改tomcat参数支持请求特殊符号
  5. PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
  6. 在Bootstrap中得模态框(modal)中下拉不能显示得问题
  7. 实现上下全屏幕屏滚动效果js
  8. K近邻法(K-Nearest Neighbor,KNN)
  9. 编写图形界面下的Java Swing程序,接受用户输入的两个数据为上下限,然后输出上、下限之间的所有素数。(结果部分每行显示10个数据)
  10. C# GDI+ 画坐标(x,y)