首页 > 其他分享 >abc260_f Find 4-cycle 题解

abc260_f Find 4-cycle 题解

时间:2023-05-24 16:57:18浏览次数:57  
标签:10 int 题解 times abc260 Find leqslant cycle

Find 4-cycle

题意

有一个 \(s + t\) 个点 \(m\) 条边的简单无向图 \(G\)。点标号为 \(1 \cdots s + t\),边标号为 \(1 \cdots m\)。第 \(i\) 条边连接点 \(u_i\) 和 \(v_i\)。

如果 \(G\) 中包含一个大小为 \(4\) 的简单环,选择任意一个并按任意顺序输出环上的 \(4\) 个点。若不存在,输出 -1

数据范围

  • \(2 \leqslant s \leqslant 3 \times 10^5, 2 \leqslant t \leqslant 3000\)。
  • \(4 \leqslant m \leqslant \min(s \times t, 3 \times 10^5)\)。
  • \(1 \leqslant u_i \leqslant s, s + 1 \leqslant v_i \leqslant s + t\)。
  • \((u_i, v_i) \ne (u_j, v_j)(i \ne j)\)。

思路

这个数据范围就很有特征,\(s\) 很大,但 \(t\) 只有 \(3000\),这就是题目的提示。

既然 \(t^2\) 不会超时,那就往暴力一点的方向思考。

大小为 \(4\) 的环,必然是编号小于等于 \(s\) 的两个点和编号大于 \(s\) 的两个点。

枚举一个编号小于等于 \(s\) 的一个点 \(i\),选择两个与它相连的两个点(编号不同),如果这两个点都连向另外一个点,那么就找出了一个大小为 \(4\) 环,输出即可;否则标记这两个点都连向 \(i\)。

复杂度

  • 时间:\(O(t^2 + s + m)\)。
  • 空间:\(O(t^2 + m)\)。

Code

点击查看代码
#include <iostream>
#include <vector>

using namespace std;

const int N = 3e5 + 10;

int s, t, m, x, y, dp[3010][3010];
vector<int> v[N];

int main () {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> s >> t >> m;
  for (int i = 1; i <= m; i++) {
    cin >> x >> y;
    v[x].push_back(y - s);
  }
  for (int i = 1; i <= s; i++) {
    for (int j : v[i]) {
      for (int k : v[i]) {
        if (j != k) {
          if (!dp[j][k]) {
            dp[j][k] = i;
          } else {
            cout << i << ' ' << j + s << ' ' << k + s << ' ' << dp[j][k];
            return 0;
          }
        }
      } 
    }
  }
  cout << -1;
  return 0;
}

标签:10,int,题解,times,abc260,Find,leqslant,cycle
From: https://www.cnblogs.com/lw0-blog/p/17428672.html

相关文章

  • abc260_e At Least One 题解
    AtLeastOne题意给定一个整数\(m\)和\(n\)对数\((a_i,b_i)\),我们定义一个\(f(x)\)函数表示满足以下要求的整数序列数量:整数序列为\((1,2,3\cdotsm)\)的一个子段且序列长度为\(x\)。对于\(1\leqslanti\leqslantn\),满足\(a_i\)或者\(b_i\)在整数序列......
  • Element 表格固定列横向滚动条无法拖动的问题解决
    在Element-UI中,当对表格列进行固定后,底部的横向滚动条就无法拖动了,主要的问题就是固定区域盖住了横向滚动条。方案一:修改el-table__body-wrapper样式的层级,随便设个层级就可::v-deep.el-table__body-wrapper{z-index:2}//加了fixed之后失效::v-deep.el-table__fi......
  • abc273_e Notebook 题解
    Notebook题意有\(q\)次操作。现在你有一个空序列\(a\)和一本\(10^9\)页的笔记本,每页纸上都有一个空序列。每次操作是以下四种中的一种:ADDx,表示在\(a\)的末尾插入一个整数\(x\)。DELETE,表示删除\(a\)的末尾的一个数,如果\(a\)序列为空则什么也不干。SAVEy,表......
  • Game on Paper 题解
    题目传送门一道模拟题。如果每涂一个格子就判断整个矩阵,那时间复杂度显然会炸。我们每涂一个格子,影响的应该只是以这个格子为中心的\(3\times3\)矩阵,判断以这些点为中心的话会不会涂出\(3\times3\)的矩阵即可。Code#include<bits/stdc++.h>#definelllonglong#d......
  • How to find the TLS used for the SQL Server connection
    本文是HowtofindtheTLSusedfortheSQLServerconnection这篇英语文章的翻译,此文出处请见于文章底部链接:原文出处[1]对于客户,我做了一些研究,如何找出SQLServer数据库会话连接使用了哪一种TLS协议。唯一的方式就是创建一个扩展事件,这个扩展事件有一个很大的限制就是只有......
  • 2023(ICPC)江西省赛I题题解
    I.Tree题意:两种操作,操作1:将一棵树一条路径上的边权异或上一个数,操作2:或者询问一个点周围所有边权的异或和。题解:首先,异或有一个性质A⨁A=0⇒A⨁B⨁A=B在进行操作一时,对X到Y的简单路径上的每一条边权异或,会是这样的情况X_w1_Z_w2_P_w3_Y,根据上面......
  • 两个非常有用的搜索命令行工具 - zzfind和sfk
    zzfindhttp://stahlforce.com/dev/index.php?tool=zzfindSearchtextinoneormore.zip,.jar,.ear,.waror.aarfiles,andevenzipfilesnestedwithinotherzips,withthefreeZZFindtoolforWindowsandLinux.Fullyportable,noinstallation-runsfr......
  • find命令技巧备忘
    1find基本用法find[path…][expression]递归地在层次目录中处理文件2基本技巧1-搜索指定文件名-name搜索文件名中可以包含正则表达式!-iname测试项。'i’可以加在许多选项前面,比如-ipath,-iregex,-iwholename等等,都是表示大小写不敏感。####1-在当前目录修改全名为test接口fin......
  • CF1196F K-th Path 题解 floyd
    题目链接:https://codeforces.com/problemset/problem/1196/F题目大意:给定一个包含\(n\)个节点\(m\)条边的无向图(\(n,m\le2\cdot10^5\))。图中任意两点之间(如果连通的话)都存在一条最短路(节点\(i\)到它自己不算最短路,\(i\)到\(j\)的最短路和\(j\)到\(i\)的最短......
  • JOISC 2022 题解
    JOISC2022Day1监狱Jail首先我们发现操作一定是给所有人排序,然后按照顺序直接从\(s_i\)挪到\(t_i\),要求是对于\(i\),所有在它之前挪的\(t\)不能在\(s_i\tot_i\)上,所有在它之后挪的\(s\)不能在\(s_i\tot_i\)上。有了这个条件我们就可以\(O(n^2)\)建图。但是这样......