Discription

In this problem you have to build tournament graph, consisting of n vertices, such, that for any oriented pair of vertices (v, u) (v ≠ u) there exists a path from vertexv to vertex u consisting of no more then two edges.

A directed graph without self-loops is a tournament, if there is exactly one edge between any two distinct vertices (in one out of two possible directions).

Input

The first line contains an integer n (3 ≤ n ≤ 1000), the number of the graph's vertices.

Output

Print -1 if there is no graph, satisfying the described conditions.

Otherwise, print n lines with n integers in each. The numbers should be separated with spaces. That is adjacency matrix a of the found tournament. Consider the graph vertices to be numbered with integers from 1 to n. Then av, u = 0, if there is no edge from v to u, and av, u = 1 if there is one.

As the output graph has to be a tournament, following equalities must be satisfied:

  • av, u + au, v = 1 for each v, u (1 ≤ v, u ≤ n; v ≠ u);
  • av, v = 0 for each v (1 ≤ v ≤ n).

Example

Input
3
Output
0 1 0
0 0 1
1 0 0
Input
4
Output
-1

构造题,比较迷。
首先我们如果有了n个点的合法图是很容易构造出n+2个点的合法图的。
首先可以把1的入点看成一类点,1的出点看成一类点,然后再加上1本身和n+1和n+2,我们现在就有了5个点。
而我们的目的是让任意一对点都在至少一个三元环 (形如a->b,b->c,c->a) 出现。
所以直接xjb构造就行了,这个其实可以不用手算,直接写个程序跑一跑也是可以的2333(我是不会告诉你们我的连边方案就是电脑枚举出来的哈哈) 但是发现4没有答案,导致我一开始以为偶数都是gg的然后就WA了。。。
后来写了个搜索发现6是有答案的2333,所以是偶数的话特判完了之后直接从6的图往后跑就行了,n=6的图可以搜索也可以手玩(反正写搜索就当练暴力了2333)
#include<bits/stdc++.h>
#define ll long long
#define maxn 1005
using namespace std;
int a[maxn][maxn];
int n,m,k,tone[maxn];
int main(){
scanf("%d",&n);
if(!(n&1)){
if(n<6){
puts("-1");
return 0;
} a[1][5]=a[1][6]=1;
a[2][1]=a[2][6]=1;
a[3][1]=a[3][2]=a[3][5]=1;
a[4][1]=a[4][2]=a[4][3]=1;
a[5][2]=a[5][4]=1;
a[6][3]=a[6][4]=a[6][5]=1; tone[2]=tone[3]=tone[4]=1; for(int i=7;i<=n;i+=2){
tone[i]=1;
a[i][1]=1,a[1][i+1]=1,a[i+1][i]=1;
for(int j=2;j<i;j++){
if(tone[j]) a[j][i]=1,a[i+1][j]=1;
else a[j][i+1]=1,a[i][j]=1;
}
}
}
else{
a[1][2]=a[2][3]=a[3][1]=1;
tone[3]=1;
for(int i=4;i<=n;i+=2){
tone[i]=1;
a[i][1]=1,a[1][i+1]=1,a[i+1][i]=1;
for(int j=2;j<i;j++){
if(tone[j]) a[j][i]=1,a[i+1][j]=1;
else a[j][i+1]=1,a[i][j]=1;
}
}
} for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) printf("%d ",a[i][j]);
puts("");
} /*
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) a[i][j]=(a[i][j]?1:1<<30);
for(int i=1;i<=n;i++) a[i][i]=0; for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) if(a[i][k]+a[k][j]<a[i][j]) a[i][j]=a[i][k]+a[k][j]; for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) if(a[i][j]>2) puts("No");
*/ return 0;
}

  

 

Codeforces 323 B Tournament-graph的更多相关文章

  1. Codeforces 459E Pashmak and Graph(dp+贪婪)

    题目链接:Codeforces 459E Pashmak and Graph 题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径. 解题思路:将边依 ...

  2. ACM - 最短路 - CodeForces 295B Greg and Graph

    CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找 ...

  3. codeforces gym100801 Problem G. Graph

    传送门:https://codeforces.com/gym/100801 题意: 给你一个DAG图,你最多可以进行k次操作,每次操作可以连一条有向边,问你经过连边操作后最小拓扑序的最大值是多少 题解 ...

  4. codeforces 21D:Traveling Graph

    Description You are given undirected weighted graph. Find the length of the shortest cycle which sta ...

  5. Codeforces 459E Pashmak and Graph

    http://www.codeforces.com/problemset/problem/459/E 题意: 给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度. 思路:用f存 ...

  6. Codeforces 466 E. Information Graph

    并查集.... E. Information Graph time limit per test 1 second memory limit per test 512 megabytes input ...

  7. codeforces 340D Bubble Sort Graph(dp,LIS)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud  Bubble Sort Graph Iahub recently has lea ...

  8. 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法

    Greg and Graph time limit per test 3 seconds memory limit per test 256 megabytes input standard inpu ...

  9. codeforces 1082G - Petya and Graph 最大权闭合子图 网络流

    题意: 让你选一些边,选边的前提是端点都被选了,求所有的边集中,边权和-点权和最大的一个. 题解: 对于每个边建一个点,然后就是裸的最大权闭合子图, 结果比赛的时候我的板子太丑,一直T,(不会当前弧优 ...

随机推荐

  1. Ubuntu系统里的python

    Ubuntu系统里,默认安装python2.7.x版本的python,直接执行python命令,打开的将是python 2.7.x版本:python3版本的需要自行安装,安装成功后,执行python3 ...

  2. SMP IRQ Affinity

    转:非常有用的方法,调式神器 SMP IRQ Affinity Background: Whenever a piece of hardware, such as disk controller or ...

  3. Linux inode 之我见

    Linux硬盘组织方式为:引导区.超级块(superblock),索引结点(inode),数据块(datablock),目录块(diredtory block).其中超级块中包含了关于该硬盘或分区上的 ...

  4. loj2031 「SDOI2016」数字配对

    跑最大费用最大流,注意到每次 spfa 出来的 cost 一定是越来越少的,啥时小于 \(0\) 了就停了吧. #include <iostream> #include <cstri ...

  5. CSS3中的border-radius兼容IE低版本解决方法

    ie-css3.htc先说道说道这斯是弄啥嘞ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border- ...

  6. LR采用的Sigmoid函数与最大熵(ME) 的关系

    LR采用的Sigmoid函数与最大熵(ME) 的关系 从ME到LR 先直接给出最大熵模型的一般形式,后面再给出具体的推导过程. \[\begin{align*} P_w(y|x) &= \df ...

  7. Scrum基础知识图谱

    啰嗦一下 最近在学习scrum项目管理的知识,书上知识点分散,很难有整体的视角来看scrum有哪些核心知识,故制作了思维导图,望给和我一样容易迷失的人一样,起到一个指引作用,废话不多说,直接上图 图谱

  8. 九度oj 题目1361:翻转单词顺序

    题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“stu ...

  9. 在SAE搭建微信公众账号服务

    让我们回到2014年11月,从公司请假回成都,在天府软件园B区旁边的小区里,那个10多平米的出租屋里,闲来无事,我想找个事情做一做,好让我这漂浮的心静下来.大约在半年前就申请了微信的一个公众账号,一直 ...

  10. pytorch下可采用visidom作为可视化工具

    2018/9/18更新  感觉tensorboardX插件更好用,已转用https://github.com/lanpa/tensorboardX 更新:新版visdom0.1.7安装方式为:cond ...