UESTC 1511(差分约束)
题目链接: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(差分约束)的更多相关文章
- 【转】最短路&差分约束题集
转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...
- 转载 - 最短路&差分约束题集
出处:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★ ...
- Candies-POJ3159差分约束
Time Limit: 1500MS Memory Limit: 131072K Description During the kindergarten days, flymouse was the ...
- poj3159 差分约束 spfa
//Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...
- ZOJ 2770火烧连营——差分约束
偶尔做了一下差分约束. 题目大意:给出n个军营,每个军营最多有ci个士兵,且[ai,bi]之间至少有ki个士兵,问最少有多少士兵. ---------------------------------- ...
- POJ 2983 Is the Information Reliable? 差分约束
裸差分约束. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...
- 2014 Super Training #6 B Launching the Spacecraft --差分约束
原题:ZOJ 3668 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668 典型差分约束题. 将sum[0] ~ sum ...
- POJ 1364 King --差分约束第一题
题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...
- [USACO2005][POJ3169]Layout(差分约束)
题目:http://poj.org/problem?id=3169 题意:给你一组不等式了,求满足的最小解 分析: 裸裸的差分约束. 总结一下差分约束: 1.“求最大值”:写成"<=& ...
- ShortestPath:Layout(POJ 3169)(差分约束的应用)
布局 题目大意:有N头牛,编号1-N,按编号排成一排准备吃东西,有些牛的关系比较好,所以希望他们不超过一定的距离,也有一些牛的关系很不好,所以希望彼此之间要满足某个关系,牛可以 ...
随机推荐
- php 命令行方式运行时 几种传入参数的方式
1. url方式 $param = array(); if ($argc > 1) { parse_str ( $argv [1], $param ); foreach ( $param as ...
- 动画曲线demo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- ubuntu——printk()函数总结,关于日志文件
我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况. 对程序的调试起到了很重要的作用. (下文中的日志级别和控制台日志控制级别 ...
- oracle修改用户密码过期时间
Oracle默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”,导致密码过期,程序无法使用,业务进程会提示无法连接数据库等字样. --查询默认密码过期时间 SELE ...
- DirectShow多媒体流捕获播放组件
英文原文地址:https://msdn.microsoft.com/en-us/library/windows/desktop/dd390351(v=vs.85).aspx Microsoft®Dir ...
- 自定义规则,对List<Map<String,Object>> List<Object>进行排序
package lltse.java.collection; import java.util.ArrayList; import java.util.Collections; import java ...
- c# ComboBox绑定枚举
定义枚举 public enum UserLevel { Commmon = , Administrator, Developer } 方法一 private void Method1() { com ...
- Unity3D安卓交互 - 使代码运行在UI线程
runOnUiThread(new Runnable() { public void run() { // TODO Auto-generated method stub } });
- atitit.软件开发--socket框架选型--netty vs mina j
atitit.软件开发--socket框架选型--netty vs mina j . Netty是由JBOSS提供的一个java开源框架 Apache mina 三.文档比较 mina文档多,,, 好 ...
- nyoj 952 最大四边形 计算几何 转载
事实再一次证明:本小菜在计算几何上就是个渣啊,唉,,, 题意:平面上n个点(n<=300),问任意四个点组成的四边形(保证四条边不相交)的最大面积是多少. 分析: 原文地址 1.第一思路是枚举四 ...