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

    1364 -- King

      继续差分约束的题。如果是“lt”就构造(s+n+1)->(s)=-w+1的边,否则构造(s)->(s+n+1)=w+1的边。因为没有取等号,所以w要加减一。

      因为没有其他限制,所以不用别的附加边。

    代码如下:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <queue>
     6 
     7 using namespace std;
     8 
     9 const int N = 111;
    10 const int M = N * N;
    11 const int INF = 0x55555555;
    12 struct Edge {
    13     int u, v, nx, c;
    14 } edge[M];
    15 int eh[N], ec;
    16 
    17 void init() {
    18     memset(eh, -1, sizeof(eh));
    19     ec = 0;
    20 }
    21 
    22 void addedge(int u, int v, int w) {
    23     edge[ec] = Edge{u, v, eh[u], w};
    24     eh[u] = ec++;
    25 }
    26 
    27 int dis[N];
    28 bool bellman(int n) {
    29     for (int i = 1; i <= n; i++) dis[i] = -INF;
    30     dis[1] = 0;
    31     bool ok;
    32     for (int i = 0; i < n; i++) {
    33         ok = true;
    34         for (int j = 0; j < ec; j++) {
    35             if (dis[edge[j].v] < dis[edge[j].u] + edge[j].c) {
    36                 dis[edge[j].v] = dis[edge[j].u] + edge[j].c;
    37                 ok = false;
    38             }
    39         }
    40         if (ok) return true;
    41     }
    42     for (int j = 0; j < ec; j++) {
    43         if (dis[edge[j].v] < dis[edge[j].u] + edge[j].c) return false;
    44     }
    45     return true;
    46 }
    47 
    48 int main() {
    49 //    freopen("in", "r", stdin);
    50     int n, m;
    51     while (~scanf("%d%d", &n, &m) && n) {
    52         init();
    53         int u, v, w;
    54         char op[3];
    55         for (int i = 0; i < m; i++) {
    56             scanf("%d%d%s%d", &u, &v, op, &w);
    57             v += u + 1;
    58             if (op[0] == 'l') addedge(v, u, -w + 1);
    59             else addedge(u, v, w + 1);
    60         }
    61         if (bellman(n)) puts("lamentable kingdom");
    62         else puts("successful conspiracy");
    63     }
    64     return 0;
    65 }
    View Code

    ——written by Lyon

  • 相关阅读:
    前端 JavaScript&Dom
    前端 css续
    前端 初级篇(CSS)
    前端 初级篇(HTML)
    堡垒机
    Python操作RabbitMQ
    常用到代码片段
    关于文件上传功能的思考
    JS正则表达式将url转成json格式
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
  • 原文地址:https://www.cnblogs.com/LyonLys/p/poj_1364_Lyon.html
Copyright © 2011-2022 走看看