Codeforces 323 B Tournament-graph
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
3
0 1 0
0 0 1
1 0 0
4
-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的更多相关文章
- Codeforces 459E Pashmak and Graph(dp+贪婪)
题目链接:Codeforces 459E Pashmak and Graph 题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径. 解题思路:将边依 ...
- ACM - 最短路 - CodeForces 295B Greg and Graph
CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找 ...
- codeforces gym100801 Problem G. Graph
传送门:https://codeforces.com/gym/100801 题意: 给你一个DAG图,你最多可以进行k次操作,每次操作可以连一条有向边,问你经过连边操作后最小拓扑序的最大值是多少 题解 ...
- codeforces 21D:Traveling Graph
Description You are given undirected weighted graph. Find the length of the shortest cycle which sta ...
- Codeforces 459E Pashmak and Graph
http://www.codeforces.com/problemset/problem/459/E 题意: 给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度. 思路:用f存 ...
- Codeforces 466 E. Information Graph
并查集.... E. Information Graph time limit per test 1 second memory limit per test 512 megabytes input ...
- codeforces 340D Bubble Sort Graph(dp,LIS)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Bubble Sort Graph Iahub recently has lea ...
- 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
Greg and Graph time limit per test 3 seconds memory limit per test 256 megabytes input standard inpu ...
- codeforces 1082G - Petya and Graph 最大权闭合子图 网络流
题意: 让你选一些边,选边的前提是端点都被选了,求所有的边集中,边权和-点权和最大的一个. 题解: 对于每个边建一个点,然后就是裸的最大权闭合子图, 结果比赛的时候我的板子太丑,一直T,(不会当前弧优 ...
随机推荐
- Python 中的for,if-else和while语句
for 循环 功能 for 循环是一种迭代循环机制,迭代即重复相同的逻辑操作,每次的操作都是基于上一次的结果而进行的.并且for循环可以遍历任何序列的项目,如一个列表或者一个字符串 语法 for 循环 ...
- leetcode-17-BST
530. Minimum Absolute Difference in BST Given a binary search tree with non-negative values, find th ...
- Centos7 开机显示 ERST: Failed to get Error Log Address Range” 导致无法开机解决方法
开机显示 ERST: Failed to get Error Log Address Range” 导致无法开机,也无法重新安装系统,解决方法:开机进入BIOS , 关闭ACPI选项即可正常开机
- day03 set集合,文件操作,字符编码以及函数式编程
嗯哼,第三天了 我们来get 下新技能,集合,个人认为集合就是用来list 比较的,就是把list 转换为set 然后做一些列表的比较啊求差值啊什么的. 先看怎么生成集合: list_s = [1,3 ...
- luogu3389 【模板】高斯消元法
#include <algorithm> #include <iostream> #include <cstdio> #include <cmath> ...
- python之路 --- python基础
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- django demo --blog
详情,请看虫师博客http://www.cnblogs.com/fnng/p/3737964.html 和https://my.oschina.net/matrixchan/blog/184445 ...
- kb-07-RMQ线段树--07(动态规划)
RMQ是一类解决区间最值查询的算法的通称:.一共有四类:在代码中有说明: 下面是ST算法,就是动态规划做法: 来看一下ST算法是怎么实现的(以最大值为例): 首先是预处理,用一个DP解决.设a是要求区 ...
- 单例/单体模式(Singleton)
单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式. 单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3, ...
- showModalDialog实现本页面内部跳转
showModalDialog的弹窗中,要实现本窗口跳转而不打开新窗口,要么submit提交,要么按如下跳转,而不能采用location=xx来跳转:function go_link(url) { ...