当前位置: 首页 > news >正文

BZOJ 2140 Tarjan

思路:

跟POJ有一道时限挺长的题一模一样  哦 POJ 1904

题解可以看这个(捂脸)

http://blog.csdn.net/qq_31785871/article/details/52963278

 

//By SiriusRen
#include <map>
#include <string>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N=55555;
int n,m,v[N],next[N],tot,first[N],stk[N],top,jy,p[N],cnt,T,Cnt,dfn[N],low[N],vis[N];
string s1,s2;
map<string,int>mp;
void add(int x,int y){v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void tarjan(int x){
    dfn[x]=low[x]=++Cnt,stk[++top]=x,vis[x]=1;
    for(int i=first[x];~i;i=next[i]){
        if(!dfn[v[i]])tarjan(v[i]),low[x]=min(low[x],low[v[i]]);
        else if(vis[v[i]])low[x]=min(low[x],dfn[v[i]]);
    }
    if(low[x]==dfn[x]){
        T++;
        do{
            jy=stk[top--],vis[jy]=0,p[jy]=T;
        }while(jy!=x);
    }
}
int main(){
    memset(first,-1,sizeof(first));
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        cin>>s1>>s2;
        mp[s1]=++cnt,mp[s2]=++cnt;
        add(cnt,cnt-1);
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        cin>>s1>>s2;
        add(mp[s1],mp[s2]);
    }
    for(int i=1;i<=cnt;i++)if(!dfn[i])tarjan(i);
    for(int i=1;i<=n;i++){
        puts(p[i*2]!=p[i*2-1]?"Safe":"Unsafe");
    }
}

 

转载于:https://www.cnblogs.com/SiriusRen/p/6592611.html

相关文章:

  • B2C的购物车概述
  • Visual Studio 2010 Team Foundation Server 安装截图
  • mac下查看占用端口的进程及杀死进程
  • Eclipse报错(”Could not reserve enough space for object heap”)
  • Oracle 基础系列之1.1 oracle的安装
  • marquee循环滚动
  • 设置 FragmentPagerAdapter
  • 局域网检测教程
  • 微信开放平台全网发布【失败】的几点排查方法
  • 服务器急救常识
  • vue-router 实现分析
  • 两个vlan之间单向控制,reflexiveacl配置介绍 转
  • 博为峰JavaEE技术文章 ——MyBatis Hibernate 工作原理
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • 技术的悟道之一 --认清自己
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【Leetcode】104. 二叉树的最大深度
  • create-react-app项目添加less配置
  • Java面向对象及其三大特征
  • js中的正则表达式入门
  • leetcode46 Permutation 排列组合
  • Material Design
  • MaxCompute访问TableStore(OTS) 数据
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • underscore源码剖析之整体架构
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Vue2.x学习三:事件处理生命周期钩子
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 回顾 Swift 多平台移植进度 #2
  • 数据结构java版之冒泡排序及优化
  • 我看到的前端
  • 想写好前端,先练好内功
  • 项目实战-Api的解决方案
  • 小而合理的前端理论:rscss和rsjs
  • ​iOS实时查看App运行日志
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (11)MATLAB PCA+SVM 人脸识别
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (排序详解之 堆排序)
  • (三分钟)速览传统边缘检测算子
  • (十一)c52学习之旅-动态数码管
  • (算法)Game
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)插入排序
  • (原)本想说脏话,奈何已放下
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)甲方乙方——赵民谈找工作
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • *2 echo、printf、mkdir命令的应用
  • .Net MVC + EF搭建学生管理系统
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 解决重复提交问题