首页 > 其他分享 >Catowice City

Catowice City

时间:2024-05-19 21:12:35浏览次数:13  
标签:City cnt const int Catowice dfn low define

Catowice City

题目链接

思路: 第 \(i\) 个人认识第 \(j\) 只猫,所以选了第 \(i\) 个人就必须选第 \(j\) 个人,那么我们连一条 \(i\) 指向 \(j\) 的边。

那么同一个连通分量中就必须同时选择。考虑不能对其他猫产生影响,我们可以选择一个没有出边的强连通分量全部选人(即编号为1的强连通分量),其他选猫即可。注意特判,如果只有一个强连通分量,那么说明不存在合法解。

代码

#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define all(u) u.begin(), u.end()
#define endl '\n'
#define sz(u) (int)(u.size())
#define debug(x) cout<<#x<<":"<<x<<endl;
typedef pair<int, int> PII;
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 10, M = 105;
const int mod = 1e9 + 7;
const int cases = 1;

int n,m;
vector<int> e[N];
stack<int> stk;
int dfn[N],low[N],tot;
int instk[N],scc[N],siz[N],cnt;
void tarjan(int u){
   dfn[u]=low[u]=++tot;
   stk.push(u);instk[u]=1;
   for(auto v:e[u]){
      if(!dfn[v]){
         tarjan(v);
         low[u]=min(low[u],low[v]);
      }else if(instk[v]) low[u]=min(low[u],dfn[v]);
   }
   if(dfn[u]==low[u]){
      int v;cnt++;
      do{
         v=stk.top();
         stk.pop();
         instk[v]=0;
         scc[v]=cnt;
         siz[cnt]++;
      }while(v!=u);
   }
}

void Showball(){
   cin>>n>>m;
   for(int i=1;i<=n;i++){
    e[i].clear();
    low[i]=0;dfn[i]=0;
    siz[i]=0;scc[i]=0;
    instk[i]=0;
  }
  cnt=0;tot=0;
   while(m--){
      int u,v;
      cin>>u>>v;
      if(u==v) continue;
      e[u].pb(v);
   }  
   for(int i=1;i<=n;i++){
      if(!dfn[i]) tarjan(i);
   }
   if(cnt==1) return cout<<"No\n",void();
   cout<<"Yes\n";
   cout<<siz[1]<<" "<<n-siz[1]<<endl;
   for(int i=1;i<=n;i++) if(scc[i]==1) cout<<i<<" ";
   cout<<endl;
   for(int i=1;i<=n;i++) if(scc[i]!=1) cout<<i<<" ";
   cout<<endl;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T=1;
    if(cases) cin>>T;
    while(T--)
    Showball();
    return 0;
}

标签:City,cnt,const,int,Catowice,dfn,low,define
From: https://www.cnblogs.com/showball/p/18200744

相关文章

  • python常用重试工具tenacity
    安装tenacitypipinstalltenacity使用示例fromtenacityimportretry,wait_fixed,stop_after_attempt​​@retry(stop=stop_after_attempt(5),wait=wait_fixed(0.2),reraise=True)deftest(): pass​​#上面的重试装饰器表示:最多重试5次,每次间隔时间0.2,当重试次......
  • Python重试任务模块tenacity
    1.简介在实际应用中,经常会碰到在web请求时,因为网络的不稳定,会有请求超时的问题,这时候,一般都是自己去实现重试请求的逻辑,直到得到响应或者超时。虽然这样的逻辑并不复杂,但是代码写起来却不那么优雅,不那么pythonic。tenacity是一个重试库,使用python语言编写,它能够让我们在任务的重......
  • Python-重试任务模块tenacity
     1.软硬件环境windows1164bits python3.6tenacity2.简介在实际应用中,经常会碰到在web请求时,因为网络的不稳定,会有请求超时的问题,这时候,一般都是自己去实现重试请求的逻辑,直到得到响应或者超时。虽然这样的逻辑并不复杂,但是代码写起来却不那么优雅,不那么pythonic。tenaci......
  • 论文笔记-Two-phase flow regime identification based on the liquid-phase velocity
    对象:液相速度信息方法:CNN、LSTM、SVM目标:实现了水平管道内两相流态识别关注特征:从速度时间序列数据中提取的统计特征:均值、均方根和功率谱密度、最大速度比和最大速度差比结果:SVM-93.1%,CNN-94%,LSTM-不佳73.3%LSTM:总共使用了300秒的速度数据,然后将其分为180秒用于训练和......
  • Velocity和XTemplate(简称xtpl)模板
    Velocity和XTemplate是两种不同的模板引擎,它们用于在Web服务器或应用程序中动态生成HTML或其他文本格式。Velocity:Velocity是ApacheSoftwareFoundation领导的一个项目,它提供了一个基于Java的模板引擎。Velocity使用类似于HTML的标记语法,并允许开发者在模板中插入引用动......
  • 什么是智慧城市(Smart City)?
    SmartCity是一个常见的概念,但是这个东西,这个名词到底指代的是什么却一直搞不太清,于是就查了查资料,有了这篇blog。参考:https://baijiahao.baidu.com/s?id=1755347170326841404智慧城市趋势华为就曾发表全球产业展望2025白皮书(GlobalIndustryVision),内容提及利用大数据......
  • CF1933D Turtle Tenacity: Continual Mods
    思路:此题其实很简单,不要被邪恶的出题人迷惑了双眼。此题判断有解一共有两种情况。通过题意可以知道将原数组排序后如果\(b_{1}\neb_{2}\),那么最后的结果一定\(\ne0\),这是第一种情况。第二种情况其实就是第一种情况的变形,在排序后\(b_{1}=b_{2}\)的情况下,如果\(b\)......
  • Multiplicity 题解
    \(\texttt{ProblemLink}\)简要题意给定一个序列\(a\),求\(\sum\limits_{i=1}^ncnt_i\)。\(cnt_i\)表示在\(a\)中选择长度为\(i\)的非空子序列\(b\)使得\(\forallj\in[1,i],j|b_j\)的数量。思路计数题,考虑dp。设\(f_{i,j}\)表示前\(i\)个数,选......
  • POI2010MOT-Monotonicity2
    线段树#dp#线段树优化dp#POI#Year2010线段树维护\(dp\)转移即可//Author:xiaruizeconstintN=1e6+10;structsegment_tree{#definelsp<<1#definersp<<1|1 piimx[N<<2]; voidupdate(intp,intl,intr,intx,piiv) { if(l......
  • 请描述一下Velocity模板中的循环结构是如何工作的。Velocity有哪些内置的函数和方法?能
    请描述一下Velocity模板中的循环结构是如何工作的。Velocity是一个基于Java的模板引擎,它允许开发人员使用简单的模板语言来引用由Java代码定义的对象,并在生成的文本中呈现这些对象。在Velocity模板中,循环结构用于遍历集合或数组,并对每个元素执行特定的操作。在Velocity模......