题目链接:http://acm.uestc.edu.cn/problem.php?pid=1511

思路:我们可以等到这样的5个关系式:

k=1:dsit[a]-dist[b]>=0&&dist[b]-dist[a]>=0

k=2:dist[a]-dist[b]<=-1;

k=3:dist[a]-dist[b]>=0;

k=4:dist[a]-dist[b]>=1;

k=5:dist[a]-dist[b]<=0;

然后就是spfa求最长路了。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define MAXN 100200
#define inf 1<<30 struct Edge{
int v,w;
Edge(int vv,int ww):v(vv),w(ww){}
}; int n,m,NE; int head[MAXN];
vector<vector<Edge> >g; void Insert(int u,int v,int w)
{
g[u].push_back(Edge(v,w));
} int dist[MAXN];
bool mark[MAXN];
int _count[MAXN]; long long spfa(int vs)
{
memset(mark,false,(n+)*sizeof(bool));
memset(_count,,(n+)*sizeof(int));
fill(dist,dist+n+,-inf);
dist[vs]=;
queue<int>que;
que.push(vs);
while(!que.empty()){
int u=que.front();
que.pop();
mark[u]=false;
_count[u]++;
if(_count[u]>n)return -;
for(int i=;i<g[u].size();i++){
int v=g[u][i].v,w=g[u][i].w;
if(dist[u]+w>dist[v]){
dist[v]=dist[u]+w;
if(!mark[v]){
mark[v]=true;
que.push(v);
}
}
}
}
long long ans=;
for(int i=;i<=n;i++){
ans+=dist[i];
}
return ans;
} int main()
{
int k,u,v,flag;
while(~scanf("%d%d",&n,&m)){
NE=;
memset(head,-,(n+)*sizeof(int));
flag=;
g.clear();
g.resize(n+);
while(m--){
scanf("%d%d%d",&k,&u,&v);
if(k==){
Insert(u,v,);
Insert(v,u,);
}else if(k==){
Insert(u,v,);
if(u==v)flag=;
}else if(k==){
Insert(v,u,);
}else if(k==){
Insert(v,u,);
if(u==v)flag=;
}else if(k==){
Insert(u,v,);
}
}
for(int i=;i<=n;i++){
Insert(,i,);
}
if(flag){
puts("-1");
continue;
}
printf("%lld\n",spfa());
}
return ;
}

UESTC 1511(差分约束)的更多相关文章

  1. 【转】最短路&差分约束题集

    转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...

  2. 转载 - 最短路&差分约束题集

    出处:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548    A strange lift基础最短路(或bfs)★ ...

  3. Candies-POJ3159差分约束

    Time Limit: 1500MS Memory Limit: 131072K Description During the kindergarten days, flymouse was the ...

  4. poj3159 差分约束 spfa

    //Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...

  5. ZOJ 2770火烧连营——差分约束

    偶尔做了一下差分约束. 题目大意:给出n个军营,每个军营最多有ci个士兵,且[ai,bi]之间至少有ki个士兵,问最少有多少士兵. ---------------------------------- ...

  6. POJ 2983 Is the Information Reliable? 差分约束

    裸差分约束. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...

  7. 2014 Super Training #6 B Launching the Spacecraft --差分约束

    原题:ZOJ 3668 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668 典型差分约束题. 将sum[0] ~ sum ...

  8. POJ 1364 King --差分约束第一题

    题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...

  9. [USACO2005][POJ3169]Layout(差分约束)

    题目:http://poj.org/problem?id=3169 题意:给你一组不等式了,求满足的最小解 分析: 裸裸的差分约束. 总结一下差分约束: 1.“求最大值”:写成"<=& ...

  10. ShortestPath:Layout(POJ 3169)(差分约束的应用)

                布局 题目大意:有N头牛,编号1-N,按编号排成一排准备吃东西,有些牛的关系比较好,所以希望他们不超过一定的距离,也有一些牛的关系很不好,所以希望彼此之间要满足某个关系,牛可以 ...

随机推荐

  1. LoadRunner利用ODBC编写MySql脚本(转)

    LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持).LoadRunner本身直接支持Oracle.SqlServer数据库,这两个数据库直接选择相应的协议 ...

  2. EMQ --集成搭建

    集群方式接受 Erlang/OTP 最初是爱立信为开发电信设备系统设计的编程语言平台,电信设备(路由器.接入网关.…)典型设计是通过背板连接主控板卡与多块业务板卡的分布式系统. Erlang/OTP ...

  3. unity, inspector listview

    inspector中实现列表框: public override void OnInspectorGUI(){ bool isDoubleClick=false;        Event e = E ...

  4. iconv 解决乱码问题

    [root@NGINX-APACHE-SVN pro]# file 林.txt 林.txt: ISO-8859 text, with no line terminators #在LINUX下显示乱码 ...

  5. sensor dma alloc failed问题

    打印信息 [CAPTURE][printCapCapbility:93]:D/ driver:sunxi-vfe [CAPTURE][printCapCapbility:94]:D/ card:sun ...

  6. 0066 阿里云大学的几道Java基础测试题

    阿里云大学的几道Java基础测试题: https://edu.aliyun.com/clouder/exam/intro/15 https://edu.aliyun.com/clouder/exam/ ...

  7. C++static关键字用法

    一.static的作用有三种:限制变量或函数作用域.保持变量内容的持久.默认初始化为0 1.被static关键字修饰的全局函数或者变量具有文件作用域,即只在当前文件中可见. 2.被static修饰的变 ...

  8. Apple ID地区怎么改为美国?(转载)

    Apple ID地区怎么改为美国?有时候我们想要去App Store中下载国外APP的话,就可以尝试将Apple ID地区改为美国,然后再打开App Store,就可以切换到美国应用市场,下载国外AP ...

  9. jquery 取第一个兄弟节点

    1.HTML <table> <tr> <td>1</td> <td>abc</td> <td>def</td ...

  10. 【Code::Blocks】windows 环境下编译 Code::Blocks(已修正)

    Code::Blocks 在2012-11-25发布了最新的12.11版本,相比上一个版本(10.05),Code::Blocks 进行了许多改进和更新(Change log). 引用 Wikiped ...