poj3169 Layout
来源:互联网 发布:算法 塞奇威克 pdf 编辑:程序博客网 时间:2024/06/05 03:59
/* 这次去查了一下,为什么大家要那样设置INF,有了些新发现 http://blog.csdn.net/jiange_zh/article/details/50198097 以及,这题的思路来自挑战,这个思路真是极其巧妙,将奶牛之间的最短距离、最长距离都转换为了最短路问题*/#include <iostream>#include <cstdio>const int MAX_ML = 1e4 + 10;const int MAX_MD = 1e4 + 10;const int INF = 0x3f3f3f3f;const int MAX_N = 1010;int N, ML, MD;int AL[MAX_ML], BL[MAX_ML], DL[MAX_ML];int AD[MAX_MD], BD[MAX_MD], DD[MAX_MD];int d[MAX_N]; //最短距离 using namespace std;void solve(){fill(d, d + N, INF);d[0] = 0;// 用Bellman-Ford算法计算dfor (int k = 0; k < N; k++){// 从 i+1 到 i 的权值为0for (int i = 0; i + 1 < N; i++)if (d[i + 1] < INF) d[i] = min(d[i], d[i + 1]);// 从 AL 到 BL 的权值为 DLfor (int i = 0; i < ML; i++){if (d[AL[i] - 1] < INF)d[BL[i] - 1] = min( d[BL[i] - 1], d[AL[i] - 1] + DL[i] );}// 从 BD 到 AD 的权值为 -DD for (int i = 0; i < MD; i++){if (d[BD[i] - 1] < INF)d[AD[i] - 1] = min ( d[AD[i] - 1], d[BD[i] - 1] - DD[i] );}}int res = d[N - 1];if (d[0] < 0) //存在负圈无解cout << -1 << endl;else if (res == INF)cout << -2 << endl;else cout << res << endl; }int main(){cin >> N >> ML >> MD;for (int i = 0; i < ML; i++)cin >> AL[i] >> BL[i] >> DL[i];for (int i = 0; i < MD; i++)cin >> AD[i] >> BD[i] >> DD[i];solve();return 0;}
阅读全文
0 0
- poj3169 Layout
- POJ3169-Layout
- POJ3169-Layout
- poj3169 Layout
- POJ3169 Layout 差分约束
- Layout poj3169 差分约束
- POJ3169 Layout(差分约束)
- Layout POJ3169 差分约束
- POJ3169 Layout (差分约束)
- poj3169 layout差分约束的证明。。。
- 【差分约束系统】Layout POJ3169
- POJ3169 Layout 【差分约束系统】
- POJ3169 Layout【SPFA】【差分约束】
- POJ3169 Layout (差分约束系统)
- POJ3169 Layout (差分约束系统)
- [POJ3169]Layout(差分约束)
- POJ3169 Layout (差分约束)
- POJ3169 Layout(差分约束 最短路)
- 编写restful api
- 欢迎使用CSDN-markdown编辑器
- C#基础-006(4)if练习 比较控制台输入的两个数字的大小
- gradle project sync completed error
- Vim比较两个文本的内容
- poj3169 Layout
- enable cef support pepflashplayer
- 计算机网络技术—知识点汇总
- input输入框禁止自动补全和下拉提示
- 百度ueditor富文本--图片保存路径的配置以及上传到远程服务器
- Uva 11732 "strcmp()" Anyone? ——空间优化的字典树
- poj1064 Cable master
- 1222: [HNOI2001]产品加工
- kmd 调试技巧