codeforces 232A Cycles (构建图,贪心+模拟)
2016-11-13 14:38
316 查看
Cycles
Description
描述
John Doe started thinking about graphs. After some thought he decided that he wants to paint an undirected graph, containing exactly kcycles of length 3.
A cycle of length 3 is an unordered group of three distinct graph vertices a, b and c, such that each pair of them is connected by a graph edge.
John has been painting for long, but he has not been a success. Help him find such graph. Note that the number of vertices there shouldn't exceed 100, or else John will have problems painting it.
Input
输入
A single line contains an integer k (1 ≤ k ≤ 105) — the number of cycles of length 3 in the required graph.
Output
输出
In the first line print integer n (3 ≤ n ≤ 100) — the number of vertices in the found graph. In each of next n lines print n characters "0" and "1": the i-th character of the j-th line should equal "0", if vertices i and j do not
have an edge between them, otherwise it should equal "1". Note that as the required graph is undirected, the i-th character of the j-th line must equal the j-th character of the i-th line. The graph shouldn't contain self-loops, so the i-th character of the
i-th line must equal "0" for all i.
Sample Input
Input
Output
Input
Output
Description
描述
John Doe started thinking about graphs. After some thought he decided that he wants to paint an undirected graph, containing exactly kcycles of length 3.
A cycle of length 3 is an unordered group of three distinct graph vertices a, b and c, such that each pair of them is connected by a graph edge.
John has been painting for long, but he has not been a success. Help him find such graph. Note that the number of vertices there shouldn't exceed 100, or else John will have problems painting it.
Input
输入
A single line contains an integer k (1 ≤ k ≤ 105) — the number of cycles of length 3 in the required graph.
Output
输出
In the first line print integer n (3 ≤ n ≤ 100) — the number of vertices in the found graph. In each of next n lines print n characters "0" and "1": the i-th character of the j-th line should equal "0", if vertices i and j do not
have an edge between them, otherwise it should equal "1". Note that as the required graph is undirected, the i-th character of the j-th line must equal the j-th character of the i-th line. The graph shouldn't contain self-loops, so the i-th character of the
i-th line must equal "0" for all i.
Sample Input
Input
1
Output
3
011101110
Input
10
Output
5
0111110111110111110111110
贪心手法。点最多一百个,那么,要让每个点的作用都发挥出来。所有,可以模拟每次加入点所带来的影响,来确定,两个点是否要连接。
#include <iostream> #include<cstdio> using namespace std; int ans,k,ss; int gra[103][103]; int main() { int n,i,j,k; scanf("%d",&n); gra[1][2]=gra[2][1]=1;//最少存在一条边 for(i=3;i<=100;i++)//依次增加顶点 { for(j=1;j<i;j++) { ss=0;//三元环个数 for(k=1;k<j;k++) if(gra[k][j]&&gra[k][i]) ss++; if(n>=ss) { n-=ss; gra[i][j]=gra[j][i]=1; } if(n==0)break; } if(n==0)break; } n=i; printf("%d\n",n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%d",gra[i][j]); printf("\n"); } return 0; }
相关文章推荐
- codeforces 26C Parquet 贪心 模拟
- Codeforces,578C,贪心出错,手工模拟“或”操作
- codeforces 26C Parquet 贪心 模拟
- CodeForces 731B-Coupons and Discounts(贪心 模拟)
- codeforces 898 D. Alarm Clock【贪心 + 模拟】
- CodeForces - 858C【贪心+模拟】
- CodeForces 637D Running with Obstacles(贪心模拟)
- CodeForces 266C—— Below the Diagonal(模拟,贪心,递归)
- codeforces 74B Train 贪心 简单模拟
- codeforces 719C (复杂模拟-四舍五入-贪心)
- CodeForces 342B--模拟+贪心
- Codeforces 520D. Cubes 贪心模拟
- Codeforces 509C. Sums of Digits 贪心 + 模拟
- 【Codeforces 780 D Innokenty and a Football League 】+ 模拟 + 贪心
- Codeforces 520D. Cubes 状态模拟+贪心
- codeforces 232A Cycles 图论 贪心 思维
- CodeForces 864D Make a Permutation! 【贪心】【模拟】
- CodeForces 593A 2Char(贪心,模拟)
- Codeforces 545D Queue【贪心+模拟】
- Codeforces 749C Voting 贪心+模拟