Description

给定n个点,m条边,k个标记点,hack掉给出的程序。

Solution

先考虑不可能hack掉的情况。当所有点都是标记点的时候肯定不能hack掉,也就是\(n=k\)。还有就是\(m > n * (n - 1) / 2 - k + 1\)(也就是最多可构造的边)。

能hack的情况下,我们先将标记点与非标记点连起来,然后将非标记点与未加入图的边连起来,这样保证了图的联通性,最后随便加边凑到\(m\)条边

#include<bits/stdc++.h>
using namespace std;
int n, m, k, x, y, a[1100], b[1100], f[1100][1100];
int main() {
scanf("%d%d%d", &n, &m, &k);
if (n == k || m > n * (n - 1) / 2 - k + 1) //不能hack掉的情况
return printf("-1\n"), 0;
for (int i = 1; i <= k; i ++) {
scanf("%d", &a[i]);
b[a[i]] = 1;
}
x = a[1];
if (a[1] == 1) y = 2; else y = 1;
for (int i = y + 1; i <= n; i ++)
if (i != x) {
if (x == y)
y ++;
printf("%d %d\n", y, i);
f[y][i] = f[i][y] = 1, m --; y ++;
}
for (int i = 1; m && i <= n; i ++)
if (!b[i])
f[x][i] = f[i][x] = 1, m --, printf("%d %d\n", x, i);
for (int i = 1; m && i <= n; i ++)
if (i != x)
for (int j = i + 1; m && j <= n; j ++)
if (j != x && !f[i][j]) {
f[i][j] = f[j][i] = 1, m --;
printf("%d %d\n", i ,j);
}
return 0;
} /*
43 76 6
24 11 30 21 35 1
*/

CF350E 【Wrong Floyd】的更多相关文章

  1. 【动态规划+Floyd】OpenJudge3368

    OpenJudge上刷水都不会了……这题居然写了一个半小时…… [题目大意] 诸葛亮要征服N城市.然而,City-X在击败City-2,City-3……City-x-1后击败.关羽,张飞,赵云,每个人 ...

  2. BZOJ1027 [JSOI2007]合金 【计算几何 + floyd】

    题目 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的 原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金的 ...

  3. ZOJ 1232 【灵活运用FLOYD】 【图DP】

    题意: copy自http://blog.csdn.net/monkey_little/article/details/6637805 有A个村子和B个城堡,村子标号是1~A,城堡标号是A+1~B.马 ...

  4. bzoj 1027: [JSOI2007]合金【凸包+Floyd】

    参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1-a-b得出,所以删掉c,把a,b抽象成二维平面上的点.首先考虑一个客户需求能 ...

  5. bzoj 1774: [Usaco2009 Dec]Toll 过路费【排序+Floyd】

    非常迷的一道题啊 我觉得挺对的版本只得了30 总之就是Floyd·改,开两个数组,一个是d[i][j]就是普通的只有边权的最短路,a[i][j]是题目要求的那种 具体改的地方是把枚举中转点的地方把中转 ...

  6. YbtOJ#832-鸽子饲养【凸包,Floyd】

    正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/3 题目大意 给出两个大小分别为\(n,m\)的点集\(A,B\). 求出\(B\)的一个最小 ...

  7. 【动态规划 floyd】SPOJ ACPC13

    为什么rzz会把这题放在NOI模拟赛的T2? 题目大意 有一张$n$个点$m$条边的有向图,每条边有权值$w_i$. 定义一个任务$(a_i,b_i,c_i)$是如下一条路径: 最多经过$c_i$条边 ...

  8. 【Floyd】文化之旅

    [NOIP2012]文化之旅 题目描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一 种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不 ...

  9. 【Floyd】珍珠

    [题目描述] 有n颗形状和大小都一致的珍珠,它们的重量都不相同.n为整数,所有的珍珠从1到n编号.你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位.下面 ...

随机推荐

  1. java--基本数据类型的转换(强制转换)

    强制类型的转换 规则: 1.执行算术运算时,低类型(短字节)可以转换为高类型(长字节):例如: int型转换成double型,char型转换成int型等等. 就是用强制类型来实现. 3.强制类型转换语 ...

  2. 前段学习 之 webpack 学习记录

    自动化安装 1.安装node (node -v查看node版本) 2.全局安装vue-cli  Npm install -g vue-cli  Vue- v:查看是否安装成功  Vue list:查看 ...

  3. java class反编译工具----JD-GUI

    下载地址   http://jd.benow.ca/

  4. 分布式缓存Redis集群配置使用

    Redis 简介          redis是一种开源的.基于内存的.可持久化的.高性能的Key-Value数据存储系统. redis能做什么? 持久化存储  高速缓存 消息中间件         ...

  5. windows server 2016 x64用MecaCli工具检查raid5磁盘状态

    下载并安装lsi MegaRAID raid卡 管理工具 下载网址:http://www.avagotech.com/support/download-search 在搜索框里搜索"mega ...

  6. centos7 永久添加静态路由

    查看路由表 ip route show|column -t route -n 永久添加路由 vim /etc/sysconfig/network-scripts/route-ens224 via 17 ...

  7. 基于CAS在.NET中实现SSO单点登录

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 单点登录原理 ...

  8. (转)sizeof()和_countof()区别

    先看程序: #include <iostream> using namespace std; int main(int argc, char* argv[]) { char *a = &q ...

  9. [认证授权] 4.OIDC(OpenId Connect)身份认证(核心部分)

    1 什么是OIDC? 看一下官方的介绍(http://openid.net/connect/): OpenID Connect 1.0 is a simple identity layer on to ...

  10. 使用队列实现栈(2)(Java)

    class MyStack { private Queue q1; private Queue q2; public MyStack(int size) { this.q1 = new Queue(s ...