zoukankan      html  css  js  c++  java
  • poj 1364 King(差分约束)

      1 
    http://poj.org/problem?id=1364

    /* 2 题意: 3 告诉你有一列长度为n的数列和m个关系式。每个关系式的表述为: 4 si ni “gt” c 或者是 si ni “lt” c。分别代表该数列第si项一直加到第si+ni项的和大于c, 5 和第si项一直加到第si+ni项的和小于c。求是否存在满足以上m个要求的数列。是则输出“lamentable kingdom”, 6 否则输出“successful conspiracy”。 7 8 tmd 犯糊涂了 用dis[i]表示 前i 项和 题中 si+s(i+1)...+s(i+n)应该=dis[i+n]-dis[i-1] 9 而我写成了 dis[i+n]-dis[i],wa...... 10 11 首先题中说的是>或< 所以要 转换成为 >=或<= (差分约束处理的是>=类的问题) 12 dis[i]表示前i项和,建图,则只需判断图中是否存在正权回路 13 14 15 */ 16 17 #include<stdio.h> 18 #include<queue> 19 #include<string.h> 20 #define max 0xfffffff 21 #define N 10000 22 using namespace std; 23 queue<int>q; 24 int n,m,dis[N],vis[N],time[N],num,next[N]; 25 struct node 26 { 27 int next; 28 int v; 29 int w; 30 }p[N*100]; 31 void insert(int u,int v,int w) 32 { 33 34 p[num].v=v; 35 p[num].w=w; 36 p[num].next=next[u]; 37 next[u]=num; 38 num++; 39 } 40 void init() 41 { 42 memset(vis,0,sizeof(vis)); 43 memset(time,0,sizeof(time)); 44 for(int i=0;i<=n;i++)dis[i]=-max; 45 dis[n+1]=0; 46 vis[n+1]=1; 47 time[n+1]=1; 48 } 49 int SPFA() 50 { 51 init(); 52 while(!q.empty())q.pop(); 53 q.push(n+1); 54 while(!q.empty()) 55 { 56 int u=q.front(); 57 vis[u]=0; 58 q.pop(); 59 for(int i=next[u];i!=-1;i=p[i].next) 60 { 61 int v=p[i].v; 62 int w=p[i].w; 63 if(dis[v]<dis[u]+w) 64 { 65 dis[v]=dis[u]+w; 66 if(!vis[v]) 67 { 68 vis[v]=1; 69 q.push(v); 70 time[v]++; 71 if(time[v]>n)return -1; 72 } 73 } 74 } 75 } 76 return 1; 77 78 } 79 int main() 80 { 81 char c[5]; 82 char str[50]; 83 int i,x,y,w; 84 while(scanf("%d",&n),n) 85 { 86 scanf("%d",&m); 87 num=0; 88 memset(next,-1,sizeof(next)); 89 getchar(); 90 for(i=0;i<m;i++) 91 { 92 gets(str); 93 sscanf(str,"%d %d %s %d",&x,&y,c,&w); 94 if(strcmp(c,"gt")==0) 95 { 96 insert(x-1,x+y,w+1); 97 } 98 else insert(x+y,x-1,-w+1); 99 } 100 for(i=1;i<=n;i++) 101 { 102 insert(n+1,i,0); 103 104 } 105 int f=SPFA(); 106 if(f==1)printf("lamentable kingdom\n"); 107 else printf("successful conspiracy\n"); 108 } 109 }
  • 相关阅读:
    putty的复制 技巧
    linux下的yum命令详解
    mysql修改密码
    我的阅读编程书籍的好方法
    WINDOWS下VIM配置
    Debian下VSFTPD配置
    一个远程访问MySQL的错误(2003, 10061)的解决
    auto_increment
    hello,world!
    scss文件中使用深度选择器/deep/报错 Expected selector Jim
  • 原文地址:https://www.cnblogs.com/acSzz/p/2476781.html
Copyright © 2011-2022 走看看