poj1364King(差分约束系统,判负环)
来源:互联网 发布:单片机制作u盘 编辑:程序博客网 时间:2024/05/18 03:44
原题地址:点击打开链接
s[a] + s[a+1] + …… + s[b] < c 可以转化成前n项和sum[b] - sum[a - 1] < c,为了能用spfa,即将< 转化成 <= ,sum[b] - sum[a - 1] <= c - 1。
#include<stdio.h>#include<string.h>#include<vector>#include<queue>using namespace std;#define inf 1<<28struct node{int v;int w;};int dis[103];bool vis[103];int s_size[105];int n,m;vector<node>e[103];bool spfa(){int u,v,w,i;queue<int>Q;Q.push(0);vis[0]=true;dis[0]=0;s_size[0]++;while(!Q.empty()){u=Q.front();Q.pop();vis[u]=false;for(i=0;i<e[u].size();i++){v=e[u][i].v;w=e[u][i].w;if(dis[v] > dis[u] +w) { dis[v]=dis[u]+w; if(!vis[v]) { vis[v]=true; Q.push(v); s_size[v]++; if(s_size[v]>n) return true; } }}}return false;}int main(){int i,j,u,v,w,flag;char str[2];while(scanf("%d",&n)&&n){ scanf("%d",&m); for(i=0;i<103;i++) e[i].clear(); for(i=0;i<m;i++){scanf("%d %d %s %d",&u,&v,str,&w);if(strcmp(str,"gt")==0){e[u+v+1].push_back((node){u,-w-1});}else if(strcmp(str,"lt")==0){e[u].push_back((node){u+v+1,w-1});}}for(i=1;i<=n+1;i++) e[0].push_back((node){i,0});for(i=0;i<=n+1;i++){dis[i]=inf;}memset(vis,false,sizeof(vis));memset(s_size,0,sizeof(s_size));flag=spfa();if(flag)printf("successful conspiracy\n");elseprintf("lamentable kingdom\n");}return 0;}
0 0
- poj1364King(差分约束系统,判负环)
- POJ1364King差分约束
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 【差分约束系统】
- 差分约束系统
- 差分约束系统
- 差分约束系统
- ##差分约束系统##
- 差分约束系统
- 差分约束系统
- 差分约束系统
- Mysql事务和隔离级别(read committed, repeatable read)
- 设计模式之适配器模式
- 同步文件到ftp
- Java的就业主要的三个方向你知道吗
- Android 自定义日历-实现签到订约功能
- poj1364King(差分约束系统,判负环)
- 全面掌握Node命令选项
- springmvc单例并发的问题
- Spring Boot 运行原理
- 2、UNIX、Linux操作系统的发展历程、介绍、应用领域
- 打开myeclipse出现以下问题“java was started but returnrd exit code=13”
- OVER(PARTITION BY)函数用法
- jquery事件和动画
- Linux 系统挂载管理