hdu3592(差分约束)
来源:互联网 发布:网络舆情工作的重要性 编辑:程序博客网 时间:2024/04/30 00:56
差分约束
学习链接http://www.cnblogs.com/void/archive/2011/08/26/2153928.html
题意:给一些限制条件,求1到n的最大距离,可转化成求最短路径,将不等式化成 <= 的形式
学习链接http://www.cnblogs.com/void/archive/2011/08/26/2153928.html
题意:给一些限制条件,求1到n的最大距离,可转化成求最短路径,将不等式化成 <= 的形式
有负边,要用SPFA,不能用dijkstra算法
代码如下:
#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<time.h>#include<math.h>#define N 1005#define inf 0x7ffffff#define eps 1e-9#define pi acos(-1.0)#define P system("pause")using namespace std;int mp[N][N],vis[N],dist[N],co[N];queue<int> q ;int n;int SPFA(int s){ while(!q.empty()) q.pop(); memset(vis,0,sizeof(vis)); memset(co,0,sizeof(co)); int i; for(i = 1 ; i <= n; i++) dist[i] = inf; dist[s] = 0; vis[s] = 1; q.push(s); co[s]++; while(!q.empty()) { int temp = q.front();// cout<<temp<<endl; q.pop(); for(i = 1; i <= n; i++) if(dist[i] > dist[temp] + mp[temp][i]) { dist[i] = dist[temp] + mp[temp][i]; if(!vis[i]) { co[i]++; q.push(i); vis[i] = 1; if(co[i] > n) return -1; } } vis[temp] = 0; } return 1;}int main(){//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout); int t; scanf("%d",&t); while(t--) { int x,y; int i,j; int a,b,c; scanf("%d%d%d",&n,&x,&y); for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) mp[i][j] = inf; //b - a <= c b <= a + c 相当于d[u] <= d[v] + mp[v][u] while(x--) { scanf("%d%d%d",&a,&b,&c);//一定要建有向图 mp[a][b] = c; } while(y--) { scanf("%d%d%d",&a,&b,&c); mp[b][a]= -c; } // s1-s0 >=0??? for(i = 1; i < n; i++) mp[i][i+1] = 0; int k = SPFA(1); if(k == -1) printf("-1\n");//存在负圈的情况 else if(dist[n] == inf) printf("-2\n");//不连通的情况 else printf("%d\n",dist[n]); } return 0;}
0 0
- hdu3592(差分约束)
- hdu3592(差分约束)
- hdu3592 差分约束问题
- hdu3592 World Exhibition --- 差分约束
- hdu3592 World Exhibition--单源最短路径&差分约束
- hdu3592查分约束的转移建图好题!!!
- ZOJ1508 (差分约束)
- BZOJ2330(差分约束)
- poj3169Layout (差分约束)
- poj3169Layout(差分约束)
- poj1275(差分约束)
- Intervals (差分约束)
- 种树(差分约束)
- hdu3666(差分约束)
- 【图-差分约束】 差分约束
- poj1201 Intervals(差分约束)
- poj 1201 Intervals(差分约束)
- POJ 3195 Candies (差分约束)
- OJ E多重继承
- Java泛型再学习
- Linux如何查看进程、杀死进程、启动进程等常用命令
- Android入门:多线程断点下载
- Android控件之ListView探究二
- hdu3592(差分约束)
- java byte与char互转原理
- Android采用ListView实现数据列表显示
- Android 教你播放SD卡的MP3
- lua学习系列:c++调用lua脚本的简单示例
- 2002-2014,克洛泽的龟兔赛跑
- 编译VTK6.1.0在vtkGUISupportQt-6.1.dll项上出现错误'GLdouble' : redefinition的解决方法
- hdu2544(单源最短路径)
- HDU 1595 find the longest of the shortest