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

题目大意:

星际大战开始了。你购买了情报,需要判断它的准确性。已知地方的根据地在由南向北排成一条直线。P A B X,表示A在B北面距离X光年的地方,另一种是V A B,表示只知道A在B的北面至少1光年的地方。

思路:

可转化为差分约束。

对于P A B X来说因为A-B=X (因为他们相距X光年,我们取北边为正方向) 可以记做:  A-B >=X &&  A-B<=X,即A-B>=X && B-A>=-X

对于V A B   ,可以记做  A-B>=1

然后老样子差分约束。记得建立一个连接所有顶点的超级顶点来保证图的连通性~

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int MAXN=1000+10;
const int MAXM=200000+1000;
const int INF=-9999999;
struct edge
{
int to;
int val;
int next;
}e[MAXM];
int head[MAXN],dis[MAXN],len,n,m; void add(int from,int to,int val)
{
e[len].to=to;
e[len].val=val;
e[len].next=head[from];
head[from]=len++;
} bool spfa()
{
int start=n+1;
for(int i=1;i<=n;i++)
dis[i]=INF; bool vis[MAXN]={0};
int cnt[MAXN]={0};
deque<int> q;
q.push_back(start);
vis[start]=1;
cnt[start]=1;
dis[start]=0;
while(!q.empty())
{
int cur=q.front();
q.pop_front();
vis[cur]=false;
for(int i=head[cur];i!=-1;i=e[i].next)
{
int id=e[i].to;
if(dis[id] < dis[cur] + e[i].val)
{
dis[id]=dis[cur] + e[i].val;
if(!vis[id])
{
if(++cnt[id] > n)
return true;
vis[id]=true;
if(!q.empty() && dis[id] > dis[q.front()])
q.push_back(id);
else
q.push_front(id);
}
}
}
}
return false;
} int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(head,-1,sizeof(head));
len=0; for(int i=0;i<m;i++)
{
char cmd[5];
int from,to,val; scanf("%s",cmd);
if(cmd[0]=='P')
{
scanf("%d%d%d",&from,&to,&val);
add(from,to,-val);
add(to,from,val);
}
else
{
scanf("%d%d",&from,&to);
add(to,from,1);
}
}
for(int i=1;i<=n;i++)
add(n+1,i,0); if(spfa())
puts("Unreliable");
else
puts("Reliable");
}
return 0;
}

最新文章

  1. Unity StrangeIoC框架
  2. js正则表达式中test,exec,match方法的区别
  3. 360浏览器下载excel问题解决方式
  4. Word 2007 文档结构图混乱
  5. surface上的手势事件
  6. JAVA设计模式之工厂模式
  7. [转]Java Web基础——Action+Service +Dao三层的功能划分
  8. bzoj4562: [Haoi2016]食物链--记忆化搜索
  9. jquery 导航固定的一个实例
  10. 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
  11. MyEclipse高效开发之必备快捷键技能
  12. 【设计模式 - 9】之装饰者模式(Decorator)
  13. MVC与EasyUI结合增删改查
  14. ELK-Kibana-01
  15. 深入浅出—Redis集群的相关详解
  16. Maven &amp; Gradle 如何从中央仓库下载Jar包
  17. Nodejs 第一站
  18. XtraEditors七、ProgressBarControl、MarqueeProgressBarControl、ProgressPanel控件
  19. Mahout 协同过滤 itemBase RecommenderJob源码分析
  20. PHP mysqli 增强 批量执行sql 语句的实现代码

热门文章

  1. 计算加班类型以及小时数(js)
  2. HBase-scan API 通过scan读取表中数据
  3. Android自定义视图
  4. 聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁
  5. js16--自定义原型对象
  6. 1.3 Quick Start中 Step 6: Setting up a multi-broker cluster官网剖析(博主推荐)
  7. int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType&#39; on a null.....
  8. c#的中英文混合字符串截取
  9. HttpUtility.UrlEncode 方法 (String) 对 URL 字符串进行编码 NET Framework 4.6 and 4.5
  10. Vue router的query对象里的值的问题