• hdoj1531


    Problem : 1531 ( King )     Judge Status : Accepted
    RunId : 2661436    Language : G++    Author : huwenbiao
    Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
    /***************************************************************\
    *Author:Hu Wenbiao
    *Created Time: Thu 22 Jul 2010 04:20:35 PM CST
    *File Name: main.cpp
    *Description:差分约束系统.S[si+ni]-S[si-1]>=ki+1>ki;S[si+ni]-
    *S[si-1]<=ki-1<ki.其中S[i]=S_1+S_2+S_3+...+S_i;
    \***************************************************************/

    //*========================*Head File*========================*\\

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    /*----------------------*Global Variable*----------------------*/
    struct
    E{
    //边
    int s,e,len;
    }
    edges[
    110];
    int
    n,m,si,ni,ki,_min,_max,dist[
    110];
    char
    oi;

    //*=======================*Main Program*=======================*//
    using namespace std;

    bool
    Bellman_Ford(){
    //Bellman-Ford求最长路径
    int s,e,len;
    for
    (int i=
    0;i<_max-_min;i++){
    bool
    flag=
    true;
    for
    (int j=
    0;j<m;j++){
    s=edges[j].s,e=edges[j].e,len=edges[j].len;
    if
    (dist[e]<dist[s]+len){
    //这儿如果是if(dist[s]!=-1&&...)
    //就会出错,有大牛路过的话麻烦指点一下。

    dist[e]=dist[s]+len;
    flag=
    false;
    }
    }

    if
    (flag)
    return
    true;
    }

    for
    (int j=
    0;j<m;j++){//验证是否有解
    s=edges[j].s,e=edges[j].e,len=edges[j].len;
    if
    (dist[e]<dist[s]+len)
    return
    false;
    }

    return
    true;
    }


    int
    main(){

    //freopen("input","r",stdin);
    while((scanf("%d",&n)==1)&&n>0){
    scanf(
    "%d",&m);
    _max=-
    1;
    _min=
    99999999;
    for
    (int i=
    0;i<m;i++){//建图
    scanf("%d %d %ct %d",&si,,&oi,&ki);
    if
    (_min>si-
    1)
    _min=si-
    1;
    if
    (_max<si+ni)
    _max=si+ni;
    if
    (oi==
    'g'){//gt
    edges[i].s=si-1;
    edges[i].e=si+ni;
    edges[i].len=ki+
    1;
    }

    else
    {
    //lt
    edges[i].s=si+ni;
    edges[i].e=si-
    1;
    edges[i].len=
    1-ki;
    }
    }

    memset(dist,-
    1,sizeof(dist));
    dist[_min]=
    0;
    if
    (Bellman_Ford())
    printf(
    "lamentable kingdom\n");
    else

    printf(
    "successful conspiracy\n");
    }
    }
  • 相关阅读:
    Git--记一次丢失本地记录但是代码已提交到gerrit
    IDEA--IDEA配置web项目
    JavaSE--泛型
    Cassandra--Cassandra 安装
    Git--.gitignore
    org.springframework.test.context.junit4.SpringJUnit4ClassRunner
    散列·跳房子散列
    散列·布谷鸟散列
    散列·完美散列
    散列·再散列
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904918.html
Copyright © 2020-2023  润新知