https://ac.nowcoder.com/acm/contest/886#question

题意  问是否存在某个n个点的无向图G是其补图H的同构图,若存在输出G的邻接矩阵以及H关于G的映射。

解析  构造题,答案不唯一。原图与补图边数要一样,所以当n=4*k+2和4*k+3时无解

当n=4*k 时 将点分成4部分P1,P2,P3,P4  前两部分P1P2所有的点两两连边组成团,P3P1部分与部分之间两两连边,P4P2部分与部分之间两两连边

它的补图 是 P3P4组成团,P4P1之间连边,P3P2之间连边,与原图是同构的。

块之间映射关系,原图 P1P2P3P4 补图P3P4P2P1或其他方案。

当n=4*k+1时 剩下一个点随便和两个块连就好了。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e3+;
int g[maxn][maxn];
int main()
{
int t,n,kase=;
cin>>t;
while(t--){
cin>>n;
memset(g,,sizeof(g));
printf("Case #%d: ",kase++);
if(n%==||n%==){
cout<<"No"<<endl;
continue;
}
else {
cout<<"Yes"<<endl;
int block=n/;
for(int i=;i<=block;i++){
for(int j=block+;j<=*block;j++)
g[i][j]=g[j][i]=;
for(int j=*block+;j<=*block;j++)
g[i][j]=g[j][i]=;
for(int j=i+;j<=block;j++)
g[i][j]=g[j][i]=;
}
for(int i=block+;i<=*block;i++){
for(int j=*block+;j<=*block;j++)
g[i][j]=g[j][i]=;
for(int j=i+;j<=*block;j++)
g[i][j]=g[j][i]=;
}
if(n%==){
for(int i=;i<=*block;i++)
g[i][n]=g[n][i]=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
printf("%d",g[i][j]);
printf("\n");
}
for(int i=*block+;i<=*block;i++)
printf("%d ",i);
for(int i=*block;i>=;i--)
printf("%d ",i);
printf("%d\n",n);
}
else{
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
printf("%d",g[i][j]);
printf("\n");
}
for(int i=*block+;i<=*block;i++)
printf("%d ",i);
for(int i=*block;i>=;i--)
printf("%d%c",i,i==?'\n':' ');
}
} }
}

2019牛客暑期多校训练营(第六场)E 构造、原图是补图的同构图的更多相关文章

  1. 2019牛客暑期多校训练营(第六场)C - Palindrome Mouse (回文自动机)

    https://ac.nowcoder.com/acm/contest/886/C 题意: 给出一个串A , 集合S里面为A串的回文字串 , 现在在集合S里面找出多少对(a,b),b为a的字串 分析: ...

  2. 2019牛客暑期多校训练营(第六场)J Upgrading Technology

    传送门 题意: 就是给你n个技能,每个技能最高升到m级,每升一级就是耗费Cij钱,这个Cij可能是负的,如果所有技能都升到或者说超过j等级,就会获得Dj钱,这个Dj也有可能是负值,让你求你最多得到多少 ...

  3. 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)

    题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才 ...

  4. 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...

  5. 2019牛客暑期多校训练营(第一场) B Integration (数学)

    链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...

  6. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  7. 2019牛客暑期多校训练营(第二场)F.Partition problem

    链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...

  8. 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...

  9. [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem

    链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  10. 2019牛客暑期多校训练营(第二场)J-Subarray(思维)

    >传送门< 前言 这题我前前后后看了三遍,每次都是把网上相关的博客和通过代码认真看了再思考,然并卵,最后终于第三遍也就是现在终于看懂了,其实懂了之后发现其实没有那么难,但是的的确确需要思维 ...

随机推荐

  1. ubuntu 快捷方式添加 applications添加

    首先我们要了解,Ubuntu 的 Dash 里所有程序都是在 /usr/share/applications 中的,所以我们的思路很简单——建一个类似于“快捷方式”一样的东西扔进去就好了.所以第一步自 ...

  2. (八)CXF之用spring添加拦截器

    一.案例 本章案例是基于CXF之自定义拦截器基础之上改造的,目的是在服务端中用spring添加拦截器 配置web.xml <?xml version="1.0" encodi ...

  3. WebAPI 笔记

    一.基本配置 1. 全局配置 Global.asax public class WebApiApplication : System.Web.HttpApplication { protected v ...

  4. ajax请求的五个步骤

    创建XMLHttpRequest异步对象 var xhr = new XMLHttpRequest() 设置回调函数 xhr.onreadystatechange = callback 使用open方 ...

  5. Java 之 HashMap 集合

    一.HashMap 概述 java.util.HashMap<k,v> 集合 implements Map<k,v> 接口 HashMap 集合的特点: 1.HashMap 集 ...

  6. 建表时表空间的一些参数pctfree initrans maxtrans storage的含义

    转自:https://a475334705.iteye.com/blog/2291441 create table X_SMALL_AREA (   idx_id             NUMBER ...

  7. asp.net mvc 防止跨站攻击

    View @using (Html.BeginForm("Contact","Home",FormMethod.Post)) { @Html.AntiForge ...

  8. Java基于Redis的分布式锁

    分布式锁,其实最终还是要保证锁(数据)的一致性,说到数据一致性,基于ZK,ETCD数据一致性中间件做分数是锁,才是王道.但是Redis也能满足最基本的需求. 参考: https://www.cnblo ...

  9. 7.Vue实例的生命周期

    1.Vue实例的生命周期: 什么是生命周期:从Vue实例创建.运行.到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期! 生命周期钩子 = 生命周期函数 = 生命周期事件 2. 主要的生命 ...

  10. python-----多进程笔记

    多进程笔记: 在Python中多进程的创建方式对比: 1.在Python中,可以通过os.fork()创建子进程,但是这种方式智能在'linux'和'unix'以及'mac'下面使用,不能跨平台,所以 ...