poj3683 2 -sat输出路径
tarjan缩点,拓扑排序染色输出(貌似挑战上面没有拓扑啊,而且这样写还过了= =)
主要是找s,t,d,三者之间的关系,找出合取范式这题就很容易了
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; stack<int>s;
int ss[N],tt[N],d[N];
int ins[N],inans[N];
int dfn[N],low[N];
int num,index;
vector<int>v[N];
int tarjan(int u)
{
ins[u]=;
dfn[u]=low[u]=++index;
s.push(u);
for(int i=;i<v[u].size();i++)
{
int x=v[u][i];
if(!dfn[x])
{
tarjan(x);
low[u]=min(low[u],low[x]);
}
else if(ins[x]==)low[u]=min(low[u],dfn[x]);
}
if(dfn[u]==low[u])
{
++num;
while(!s.empty()){
int k=s.top();
s.pop();
ins[k]=;
inans[k]=num;
if(k==u)break;
}
}
}
int main()
{
/* ios::sync_with_stdio(false);
cin.tie(0);*/
int n;
scanf("%d",&n);
memset(ins,,sizeof ins);
memset(inans,,sizeof inans);
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
while(!s.empty())s.pop();
for(int i=;i<=*n;i++)v[i].clear();
num=index=;
for(int i=;i<=n;i++)
{
char S[],T[];
scanf("%s%s%d",&S,&T,&d[i]);
ss[i]=((int)(S[]-'')*+(int)(S[]-''))*+(int)(S[]-'')*+(int)(S[]-'');
tt[i]=((int)(T[]-'')*+(int)(T[]-''))*+(int)(T[]-'')*+(int)(T[]-'');
}
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)
{
if(min(ss[i]+d[i],ss[j]+d[j])>max(ss[i],ss[j]))
{
v[i].push_back(j+n);
v[j].push_back(i+n);
}
if(min(ss[i]+d[i],tt[j])>max(ss[i],tt[j]-d[j]))
{
v[i].push_back(j);
v[j+n].push_back(i+n);
}
if(min(tt[i],ss[j]+d[j])>max(tt[i]-d[i],ss[j]))
{
v[i+n].push_back(j+n);
v[j].push_back(i);
}
if(min(tt[i],tt[j])>max(tt[i]-d[i],tt[j]-d[j]))
{
v[i+n].push_back(j);
v[j+n].push_back(i);
}
}
}
for(int i=;i<=*n;i++)
if(!dfn[i])
tarjan(i);
bool f=;
for(int i=;i<=n;i++)
if(inans[i]==inans[i+n])
{
f=;
break;
}
if(f)puts("NO");
else
{
puts("YES");
for(int i=;i<=n;i++)
{
if(inans[i]<inans[i+n])printf("%02d:%02d %02d:%02d\n",ss[i]/,ss[i]%,(ss[i]+d[i])/,(ss[i]+d[i])%);
else printf("%02d:%02d %02d:%02d\n",(tt[i]-d[i])/,(tt[i]-d[i])%,tt[i]/,tt[i]%);
}
}
return ;
}
/******************** ********************/
poj3683 2 -sat输出路径的更多相关文章
- VS 工程的 输出路径和工作路径的区别
输出路径,是vs编译项目生成可执行文件的路径:工作路径是环境变量,比如我们在程序中写相对路径,就是以这个路径为基础的.在默认情况下,输出路径和工作路径都不写的话,默认是程序的bin下面的debug或者 ...
- HD1385Minimum Transport Cost(Floyd + 输出路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- C++builder XE 安装控件 及输出路径
C++builder XE 安装控件 与cb6不一样了,和delphi可以共用一个包. 启动RAD Studio.打开包文件. Project>Options>Delphi Compile ...
- HDU 1385 Minimum Transport Cost (最短路,并输出路径)
题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...
- web项目Log4j日志输出路径配置问题
问题描述:一个web项目想在一个tomcat下运行多个实例(通过修改war包名称的实现),然后每个实例都将日志输出到tomcat的logs目录下实例名命名的文件夹下进行区分查看每个实例日志,要求通过尽 ...
- VJP1071新年趣事之打牌(背包+输出路径)
简单的01背包 保存下方案总数 其实就是dp[v]值 输出路径dfs一下 #include <iostream> #include<cstdio> #include<cs ...
- (poj)3414 Pots (输出路径的广搜)
Description You are given two pots, having the volume of A and B liters respectively. The following ...
- Cmake 脚本对项目输出路径和输出头文件的路径定义
对Lib项目的统一输出路径以下时解决方案: set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)set(CMAKE_LIBRARY_O ...
- Part Acquisition(spfa输出路径)
Part Acquisition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4080 Accepted: 1742 ...
随机推荐
- Java 集合框架之 JDK 1.5 新特性
forEach 循环 多用于元素迭代. 适用范围: - 数组 - 实现 Iterable 接口的集合类 格式: for(类型 变量 : Collection 集合 | 数组) { } 传统 for 和 ...
- settings配置与model优化
settings配置与model优化 settings: 项目基本配置(settings.py, models.py, admin.py, templates...).数据库操作.中间件 http: ...
- 自动更新SVN项目
@echo off@echo =================================@echo 定时在SVN上自动更新项目内容,可用于项目放在web服务器没有hudson的时候@echo ...
- Vue(5)- axios、vuex
一.内容回顾 1.webpack(前端中工作,项目上线之前对整个前端项目优化) - entry:整个项目的程序入口(main.js或index.js): - output:输出的出口: - loade ...
- 003-Java非堆CodeCache详解
一.概述 Java的内存由堆和非堆两个部分组成.对于堆来说,它的组成是比较确定的,它包含了年轻代和年老代两个部分,而年轻代又是由Eden区和两个Survivor区组成.可是,非堆由哪些部分组成呢? 在 ...
- windows10下安装face_recongnition
第一步:安装vistual studio,我安装的是最新版本2017. 另外,并且因为要学习C# ,选了所需要的东西.暂不知这一步是否必需. 第二步:接下来安装boost 通过此链接:https:// ...
- Django CSRF cookie not set.错误
post提交表单报错: Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message b ...
- 常用的Issue解决方案(EF框架)
1.提交出错:ObjectStateManager 中已存在具有同一键的对象. ObjectStateManager 无法跟踪具有相同键的多个对象. 遇到此问题,首先要确定的是主键是否赋值,以及 ...
- webservice -- cxf客户端调用axis2服务端
背景: 有个项目, 需要由第三方提供用户信息, 实现用户同步操作, 对方给提供webservice接口(axis2实现)并也使用axis2作主客户端调用我方提供的webservice接口 起初, 由于 ...
- LVS基本介绍
一.LVS概念 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器.这是一个由章文嵩博士发起的一个开源项目,它的官方网站是http://www.linuxvirtual ...