首页 > 其他分享 >codeforces图论合集

codeforces图论合集

时间:2023-09-14 17:47:07浏览次数:45  
标签:图论 space int codeforces ins dfn low push 合集

Cyclic Operations

给定一个数组$a$,每次构造一个数组$\space l \space$长度为$\space k\space$,数组$\space a\space$与$\space l\space$转换关系如下 :

$a_{l_1}\to l_2\space,\space a_{l_2}\to l_3\space,\space a_{l_3}\to l_4\space,\space...\space,\space a_{l_n}\to l_1$


 

这种数组值与位置相关的题目,感觉有种常见的 trick 就是对于值和位置连边判环,这题判断环是不是都是k元环即可

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef long long ll;

const int N=1e5+5;
//bel数组记录某个点在哪个连通块里面
vector<int>edge[N];
int dfn[N],low[N],ins[N],bel[N],idx,n,m,cnt;
stack<int>stk;
vector<vector<int>>scc;

void dfs(int u){
    dfn[u]=low[u]=++idx;
    ins[u]=true; stk.push(u);
    for(auto v:edge[u]){
        if(!dfn[v]){
            dfs(v);
            low[u]=min(low[u],low[v]);
        }else{
            if(ins[v])low[u]=min(low[u],dfn[v]);
        }
    }
    if(dfn[u]==low[u]){
        vector<int>c;
        cnt++;
        while(1){
            int v=stk.top(); bel[v]=cnt;
            stk.pop(); ins[v]=false;
            c.push_back(v);
            if(v==u)break;
        }
        scc.push_back(c);
    }
}

void init() {
    for(int i = 0; i <= n; i++) {
        dfn[i] = low[i] = 0;
        edge[i].clear();
        if(i < cnt) scc.clear();
    }
    idx = cnt = 0;
}

int main(){
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int T = 1; cin >> T;
    while(T--) {
        int k; cin >> n >> k;
        init();
        bool ok = true;
        for(int i = 1; i <= n; i++) {
            int x; cin >> x;
            edge[i].push_back(x);
            if(i == x && k != 1) ok = false;
            if(k == 1 && x != i) ok = false; 
        }
        for(int i = 1; i <= n; i++) {
            if(!dfn[i]) dfs(i);
        }
        for(int i = 0; i < cnt; i++) {
            if((int)scc[i].size() != 1 && (int)scc[i].size() != k) ok = false;
        }
        if(ok) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}
View Code

 

标签:图论,space,int,codeforces,ins,dfn,low,push,合集
From: https://www.cnblogs.com/zhujio/p/17702995.html

相关文章

  • Codeforces Round 897 (Div. 2) 考试总结
    前言这次打得很好,相较于div3的脑残题和签到题来说,div2的思维难度更加的大。同时还有除传统题外,其他的题型出现。比如交互题等。这次能在考场上想出三道较于之前是有很大的进步的。赛时实况:ABCDE1E2F√√√××××赛后改题情况:ABCDE1E2F......
  • Codeforces 1868C/1869E Travel Plan 题解 | 巧妙思路与 dp
    题目链接:TravelPlan题目大意:\(n\)个点的完全二叉树,每个点可以分配\(1\simm\)的点权,定义路径价值为路径中最大的点权,求所有路径的价值和。对于任意长度(这里主要指包括几个节点)的路径\(t\),最大点权不超过\(k\)的方案数有\(k^t\)个,因此最大点权恰好为\(k\)的方案数有......
  • 计算机网络必背合集
    一、计算机网络体系结构1. 端到端通信和点到点通信有什么区别?答:点到点的服务,是指直接相连的结点之间的通信叫点到点通信。它只提供一台机器(一   个节点)到另一台机器(另一个节点)之间的通信,如下图所示,路由器1和路由器2之间的通信就是点到点通信。点到点通信并不能保证数......
  • Codeforces Round 781 (Div. 2) B. Array Cloning Technique
    给一个长度为\(n\)的数组\(a\)。开始只有一份所给\(a\)的副本。你可以做以下两种操作:选择任意一个副本并且克隆它,然后将会多出一个克隆副本。交换两个元素,他们属于任意两个副本(可能是同一个)。需要判断最小操作数,使有一个副本的所有元素相同。观察一:只需要在开始的副本......
  • 图论模板
    floyd算法template<typenameT>structFloyd{constTINF=std::is_same_v<T,longlong>?1e18:1e9;intn;std::vector<std::vector<T>>dp;Floyd(intn_):n(n_){dp.resize(n+1);for(auto&row:dp){......
  • 【专题】2023工业互联网平台白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33647这份报告合集是基于中国工业产业升级和智能制造的大背景而展开的。报告合集分析了工业互联网平台市场的发展阶段、平台玩家的产品和服务的底层逻辑以及变化趋势,并探讨了补贴减少、数据归属权之争、标准化与盈利模式、ChatGPT等因素对工业互联......
  • 【专题】进一步促进数字经济和实体经济深度融合:加速工业互联网建设报告PDF合集分享(附
    原文链接:https://tecdat.cn/?p=33647这份报告合集是基于中国工业产业升级和智能制造的大背景而展开的。报告合集分析了工业互联网平台市场的发展阶段、平台玩家的产品和服务的底层逻辑以及变化趋势,并探讨了补贴减少、数据归属权之争、标准化与盈利模式、ChatGPT等因素对工业互联......
  • 【专题】全球工业互联网创新发展报告(2022年)报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33647这份报告合集是基于中国工业产业升级和智能制造的大背景而展开的。报告合集分析了工业互联网平台市场的发展阶段、平台玩家的产品和服务的底层逻辑以及变化趋势,并探讨了补贴减少、数据归属权之争、标准化与盈利模式、ChatGPT等因素对工业互联......
  • Codeforces Round 787 (Div. 3) B. Make It Increasing
    给一个长为\(n\)的数组\(a_1,a_2,\cdots,a_n\quad(0\leqa_i\leq10^9)\)。可以执行以下操作任意次:选择任意一个\(a_i\)并且执行\(a_i=\lfloor\frac{a_i}{2}\rfloor\)。输出最小操作次数,使得数组所有元素变为严格递增。观察:数组一些位置变小,将数组变为严......
  • 【专题】2023年中国工业互联网平台行业研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33647原文出处:拓端数据部落公众号这份报告合集是基于中国工业产业升级和智能制造的大背景而展开的。报告合集分析了工业互联网平台市场的发展阶段、平台玩家的产品和服务的底层逻辑以及变化趋势,并探讨了补贴减少、数据归属权之争、标准化与盈利模......