zoukankan      html  css  js  c++  java
  • 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");
    }
    }
  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904918.html
Copyright © 2011-2022 走看看