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输出路径的更多相关文章

  1. VS 工程的 输出路径和工作路径的区别

    输出路径,是vs编译项目生成可执行文件的路径:工作路径是环境变量,比如我们在程序中写相对路径,就是以这个路径为基础的.在默认情况下,输出路径和工作路径都不写的话,默认是程序的bin下面的debug或者 ...

  2. HD1385Minimum Transport Cost(Floyd + 输出路径)

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  3. C++builder XE 安装控件 及输出路径

    C++builder XE 安装控件 与cb6不一样了,和delphi可以共用一个包. 启动RAD Studio.打开包文件. Project>Options>Delphi Compile ...

  4. HDU 1385 Minimum Transport Cost (最短路,并输出路径)

    题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...

  5. web项目Log4j日志输出路径配置问题

    问题描述:一个web项目想在一个tomcat下运行多个实例(通过修改war包名称的实现),然后每个实例都将日志输出到tomcat的logs目录下实例名命名的文件夹下进行区分查看每个实例日志,要求通过尽 ...

  6. VJP1071新年趣事之打牌(背包+输出路径)

    简单的01背包 保存下方案总数 其实就是dp[v]值 输出路径dfs一下 #include <iostream> #include<cstdio> #include<cs ...

  7. (poj)3414 Pots (输出路径的广搜)

    Description You are given two pots, having the volume of A and B liters respectively. The following ...

  8. Cmake 脚本对项目输出路径和输出头文件的路径定义

    对Lib项目的统一输出路径以下时解决方案: set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)set(CMAKE_LIBRARY_O ...

  9. Part Acquisition(spfa输出路径)

    Part Acquisition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4080   Accepted: 1742 ...

随机推荐

  1. 解锁Opera浏览器新姿势:【Surf The Internet In Right Ways】

    下载Opera浏览器 官网下载:https://www.opera.com/zh-cn 更改PC系统区域 我的本子是win10,其他系统未测. 进入: 设置 → 区域和语言 将国家或地区设置为:中国台 ...

  2. hibernate自动建表之engine设置

    1.MYSQL的数据库引擎中,只有InnoDB和BDB(Berkley DB )包括了对事务处理和外键的支持.如果数据引擎建为MyISAM则rollback无效. 2.而hibernate自动建表的时 ...

  3. servlet 通过 FileItem 实现多文件上传

    [本文简介] 一个servlet 多文件上传的简单例子. [依赖包] commons-fileupload-1.3.1.jar commons-io-2.2.jar [依赖包下载] commons-f ...

  4. node.js---sails项目开发(5)---用户表的建立

    1. ctrl+c  暂停sails项目  ,输入如下命令,创建一个user表 sails generate api user 2.在api目录分别建立了两个文件  api/controllers/U ...

  5. 注册tomcat为windows服务(转载)

    第一部分 应用场景 需要服务器上Tomcat不显示启动窗口 需要服务器上Tomcat开机自启动 ... 第二部分 配置过程 一.修改配置文件 1 {Tomcat_HOME}/bin/service.b ...

  6. Python高阶函数-闭包

    高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 在这里我们首先回忆一下python代码运行的时候遇到函数是怎么做的. 从python解释器开始执行之后,就在内存中开辟了一个空间 每当 ...

  7. How to make TWebBrowser get focus in Delphi

    How to make TWebBrowser get focus in Delphi   Written by Administrator       Tags: Delphi Twebbrowse ...

  8. Generative model 和Discriminative model

    学习音乐自动标注过程中设计了有关分类型模型和生成型模型的东西,特地查了相关资料,在这里汇总. http://blog.sina.com.cn/s/blog_a18c98e50101058u.html ...

  9. dojo 代码调试

    安装 Firebug 使用firedug

  10. Spark机器学习2·准备数据(pyspark)

    准备环境 anaconda nano ~/.zshrc export PATH=$PATH:/anaconda/bin source ~/.zshrc echo $HOME echo $PATH ip ...