• C. Searching for Graph(cf)


    C. Searching for Graph
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Let's call an undirected graph of n vertices p-interesting, if the following conditions fulfill:

    • the graph contains exactly 2n + p edges;
    • the graph doesn't contain self-loops and multiple edges;
    • for any integer k (1 ≤ k ≤ n), any subgraph consisting of k vertices contains at most 2k + p edges.

    A subgraph of a graph is some set of the graph vertices and some set of the graph edges. At that, the set of edges must meet the condition: both ends of each edge from the set must belong to the chosen set of vertices.

    Your task is to find a p-interesting graph consisting of n vertices.

    Input

    The first line contains a single integer t (1 ≤ t ≤ 5) — the number of tests in the input. Next t lines each contains two space-separated integers: n, p (5 ≤ n ≤ 24; p ≥ 0; ) — the number of vertices in the graph and the interest value for the appropriate test.

    It is guaranteed that the required graph exists.

    Output

    For each of the t tests print 2n + p lines containing the description of the edges of a p-interesting graph: the i-th line must contain two space-separated integers ai, bi (1 ≤ ai, bi ≤ nai ≠ bi) — two vertices, connected by an edge in the resulting graph. Consider the graph vertices numbered with integers from 1 to n.

    Print the answers to the tests in the order the tests occur in the input. If there are multiple solutions, you can print any of them.

    Sample test(s)
    input
    1
    6 0
    output
    1 2
    1 3
    1 4
    1 5
    1 6
    2 3
    2 4
    2 5
    2 6
    3 4
    3 5
    3 6

    这个题是A题的水平额。。是在考题意么。。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 #include <iostream>
     5 const int N=120;
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     int t,n,p;
    11     cin>>t;
    12     while(t--)
    13     {
    14         cin>>n>>p;
    15         int m = 2*n+p;
    16         int cnt = 0,flag = 0;
    17         for (int i = 1;i <= n; i++)
    18         {
    19             for (int j = i+1;j <= n; j++)
    20             {
    21                 cout<<i<<" "<<j<<endl;
    22                 cnt++;
    23                 if (cnt==m)
    24                 {
    25                     flag = 1;
    26                     break;
    27                 }
    28             }
    29             if (flag)
    30             break;
    31         }
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    c++跨平台技术学习(一)--使用公共的代码
    软件项目将死的27个征兆
    Java中的方法重载应用
    Java成员变量的初始化和在內存中的运行机制
    Java源文件结构和Java常用包
    细说Java访问控制符
    构造函数与this
    linux基础学习-6.3-DNS的配置文件
    linux基础学习-6.2-网卡配置文件
    linux基础学习-6.1-目录结构的特点
  • 原文地址:https://www.cnblogs.com/lahblogs/p/3604659.html
Copyright © 2020-2023  润新知