http://poj.org/problem?id=2983

题意:N 个 defense stations,M条消息,消息有精确和模糊之分,若前边为P。则为精确消息,有两个defense stations和他们之间的距离,若为P A B X 则是精确消息,并且A在B北边X光年远,V A B则是模糊消息,A在B北边,不知道距离,但至少是1光年远。

思路 :这个题要转化成差分约束。因为dist[a]-dist[b] = x,所以转化成差分约束x<=dist[a]-dist[b]<=x ,模糊消息因为至少为1,所以转化后为 dist[b] - dist[a] >= 1,化简之后为 dist[b] - dist[a] <= x    dist[a] - dist[b] <= -x    dist[a] - dist[b]  <= -1.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream> using namespace std ;
const int INF = ;
int cnt,m ,n;
int dist[] ;//源点到各点的距离 struct node
{
int u,v,w ;
}edge[] ; void addedge(int u,int v,int w)//加边
{
edge[cnt].u = u ;
edge[cnt].v = v ;
edge[cnt].w = w ;
cnt++ ;
} bool bellman_ford(int start)
{
for(int i = ; i <= n ; i++)
i == start ? dist[i] = : dist[i] = INF ;
for(int i = ; i < n ; i++)
{
bool flag = false ;
for(int j = ; j < cnt ; j++)
{
int u = edge[j].u,v = edge[j].v,w = edge[j].w ;
if(dist[v] > dist[u] + w)
{
dist[v] = dist[u] + w ;
flag = true ;
}
}
if(!flag)//若dist没有任何改变说明以后也不会变,可直接返回
return true ;
}
for(int j = ; j < cnt ; j++)
{
int u = edge[j].u,v = edge[j].v,w = edge[j].w ;
if(dist[v] > dist[u] + w)
return false ;
}
return true ;
} int main()
{
char ch ;
int u,v,w ;
while(~scanf("%d %d",&n,&m))
{
cnt = ;
for(int i = ; i < m ; i++)
{
getchar() ;
scanf("%c",&ch) ;
if(ch == 'P')
{
scanf("%d %d %d",&u,&v ,&w) ;//两点距离确定建立双向边
addedge(v,u,-w) ;
addedge(u,v,w) ;
}
if(ch == 'V')
{
scanf("%d %d",&u,&v) ;//两点距离不定,建立单向边
addedge(v,u,-) ;
}
}
if(bellman_ford())
printf("Reliable\n") ;
else printf("Unreliable\n") ;
}
return ;
}

POJ 2983 Is the Information Reliable?(差分约束系统)的更多相关文章

  1. POJ 2983 Is the Information Reliable? 差分约束

    裸差分约束. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...

  2. POJ 2983-Is the Information Reliable?(差分约束系统)

    题目地址:POJ 2983 题意:有N个车站.给出一些点的精确信息和模糊信息.精确信息给出两点的位置和距离.模糊信息给出两点的位置.但距离大于等于一.试确定是否全部的信息满足条件. 思路:事实上就是让 ...

  3. POJ 2983 Is the Information Reliable? 依旧差分约束

    http://poj.org/problem?id=2983 题目大意: 星际大战开始了.你购买了情报,需要判断它的准确性.已知地方的根据地在由南向北排成一条直线.P A B X,表示A在B北面距离X ...

  4. POJ 2983 Is the Information Reliable? 信息可靠吗 (差分约束,spfa)

    题意:有n个站排成一列,针对每个站的位置与距离关系,现有多个约束条件,约束条件分两种:(1)确定的.明确说明站a距离站b多少个单位距离.(2)不确定的.只知道a在b的左边至少1个单位距离.  根据已知 ...

  5. ●POJ 2983 Is the Information Reliable?

    题链: http://poj.org/problem?id=2983 题解: 差分约束. 1).对于条件(P u v w),不难发现反映到图上就是: $dis[u]-dis[v]=w$,所以添加两条边 ...

  6. Is the Information Reliable?(差分约束系统)

    http://poj.org/problem?id=2983 题意:给出M条信息,判断这些信息的正确性.(1)V A B :表示A,B之间的距离>=1; (2)P A B X :表示A B之间的 ...

  7. POJ 3159 Candies (图论,差分约束系统,最短路)

    POJ 3159 Candies (图论,差分约束系统,最短路) Description During the kindergarten days, flymouse was the monitor ...

  8. 【POJ 1716】Integer Intervals(差分约束系统)

    id=1716">[POJ 1716]Integer Intervals(差分约束系统) Integer Intervals Time Limit: 1000MS   Memory L ...

  9. 【POJ 1275】 Cashier Employment(差分约束系统的建立和求解)

    [POJ 1275] Cashier Employment(差分约束系统的建立和求解) Cashier Employment Time Limit: 1000MS   Memory Limit: 10 ...

随机推荐

  1. vagrant Ubuntu server 12.04 dpkg: dependency problems prevent configuration of python-gi

    Ubuntu server 12.04因为尝试安装过xfce,导致sudo apt-get install xxx 都会返回,如: vagrant@precise32:~$ sudo apt-get ...

  2. session的介绍与简单使用

    cookie由浏览器带着,容易被篡改因为cookie很容易被篡改,所以cookie用来记住用户名,记住浏览历史等安全性要求不高的地方可以用sessin技术session技术将信息存入服务器,然后再给客 ...

  3. xml复习

    一.XML概述 1.XML是可扩展标记语言.是由W3C指定并维护的,目前最新的版本是1.0 2.XML作用: 2.1传输数据,它是一种通用的数据交换格式 2.2配置文件. 二.xml语法 1.XML的 ...

  4. OAuth2集成——《跟我学Shiro》

    http://jinnianshilongnian.iteye.com/blog/2038646 目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放 ...

  5. ACM——数的计算

    数的计算——(递归(超时)和非递归) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:1050            测试通过:31 ...

  6. windows下用过VMware安装MAC OS X苹果系统

    vmware怎么安装os x10.9?vmware 10安装mac os 10.9教程详解 来源:互联网 作者:佚名 时间:10-30 13:50:20 [大 中 小] VMWare 虚拟机可以使你在 ...

  7. 常用经典SQL语句大全(基础)

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sqlserver --- 创 ...

  8. partial与sorted

    import functools sorted_ignore_case = functools.partial(sorted,cmp=lambda s1, s2: cmp(s1.upper(), s2 ...

  9. 在Linux系统下安装大于mysql5.5版本的数据库

    linux下mysql 5.5的安装方法: 1.安装所需要系统库相关库文件      gcc等开发包,在安装linux系统的时候安装. 2.创建mysql安装目录 # mkdir -p /usr/lo ...

  10. MVC文件上传 - 使用jquery异步上传并客户端验证类型和大小

    本篇体验MVC上传文件,从表单上传过渡到jquery异步上传. MVC最基本的上传文件是通过form表单提交方式 □ 前台视图部分 <% using(Html.BeginForm("F ...