POJ-3169 Layout (差分约束)
来源:互联网 发布:淘宝旺旺卖家版2016 编辑:程序博客网 时间:2024/06/16 05:41
题目链接:
题目大意:
数据范围:
解题思路:
代码:
#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>using namespace std;const int MaxN = 1e4;const int INF = 1 << 30;int n, ml, md;int all;int pre[2 * MaxN + 5], last[MaxN + 5], other[2 * MaxN + 5];int cost[2 * MaxN + 5];int seq[MaxN + 5], dis[MaxN + 5];int cnt[MaxN + 5]; //一个点的入队次数bool inque[MaxN + 5];void build(int x, int y, int w){ pre[++all] = last[x]; last[x] = all; other[all] = y; cost[all] = w;}int SPFA(int s){ for(int i = 1; i <= n; i++) dis[i] = INF; dis[s] = 0; int head = 1, tail = 0; seq[++tail] = s; inque[s] = 1; int now, ed, dr; while(head <= tail) { now = seq[head]; ed = last[now]; while(ed != -1) { dr = other[ed]; if(dis[now] + cost[ed] < dis[dr]) { dis[dr] = dis[now] + cost[ed]; if(inque[dr] == 0) { cnt[dr]++; if(cnt[dr] > n) return -1; //检测是否存在负权回路 inque[dr] = 1; seq[++tail] = dr; } } ed = pre[ed]; } inque[now] = 0; head++; } if(dis[n] == INF) return -2; else return dis[n];}int main(){ while(scanf("%d %d %d", &n, &ml, &md) != EOF) { all = -1; memset(last, -1, sizeof(last)); //对于任意的d[x] - d[y] <= z,建立y -> x 边权为z的有向边 for(int i = 1; i <= ml; i++) { int u, v, w; scanf("%d %d %d", &u, &v, &w); //u为编号较小点 if(u > v) swap(u, v); build(u, v, w); //d[u] + w >= d[v] ==> d[v] - d[u] <= w //建立u -> v 边权为w的有向边 } for(int i = 1; i <= md; i++) { int u, v, w; scanf("%d %d %d", &u, &v, &w); //u为编号较小点 if(u > v) swap(u, v); build(v, u, -w); //d[u] + w <= d[v] ==> d[u] - d[v] <= -w //建立v -> u 边权为-w的有向边 } int ans = SPFA(1); printf("%d\n", ans); } return 0;}
- POJ 3169 Layout(差分约束系统)
- POJ 3169 Layout [差分约束]
- POJ 3169 Layout 差分约束系统
- POJ 3169 Layout 差分约束系统
- poj 3169 Layout(差分约束)
- poj 3169 Layout(差分约束)
- poj 3169 Layout 差分约束
- POJ 3169 Layout(差分约束系统)
- POJ 3169 Layout (差分约束spfa)
- poj 3169 Layout (差分约束+Bellman )
- poj 3169 Layout (差分约束+Bellman )
- POJ 3169-Layout(差分约束系统)
- poj 3169 Layout 【差分约束】
- POJ 3169 Layout(差分约束啊)
- poj 3169 Layout 差分约束
- poj 3169 Layout (差分约束)
- POJ 3169--Layout【差分约束】
- [POJ 3169] Layout 差分约束
- 一个程序员需要多少技能
- Java关键字
- POJ P1185 炮兵阵地 【状压dp】
- org/springframework/context/ApplicationContext : Unsupported major.minor version 52.0
- 相似三角形
- POJ-3169 Layout (差分约束)
- 原生javascript封装时间格式化方法
- 深入理解Java虚拟机随笔之运行时数据区
- 1000以内的阶乘
- caffe 利用Python API做分类预测,以及特征的可视化
- Java高并发程序设计读书笔记
- hiho 1615 矩阵游戏II [Offer收割]编程练习赛33 Problem A 贪心暴力
- 牛客网C++编程题(二) 替换空格
- JSP