B - Balanced Neighbors 题解(构造)

题目链接

题目思路

给你一个节点数\(n(3\leq n\leq 100)\)

要你构造一个简单联通图,使得每个节点的周围的节点和相同

题目思路

这个题目看了题解之后,就啪的一下很快啊,很快就a了

但是不看题解也想不到。。。

其实就是把\(n\)分为奇偶考虑

\(n\)为偶数,则\(i\)节点不和\(n-i+1\)节点相连

\(n\)为奇数,则\(i\)节点不和\(n-i\)节点相连

除此之外其他点全部两两相连

这样的结论是显然的

代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef pair<double,int> pdi;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=1e2+5,mod=1e7;
int n;
bool vis[maxn][maxn];
int main(){
    scanf("%d",&n);
    if(n%2==0){
        for(int i=1;i<=n/2;i++){
            vis[i][n-i+1]=1;
        }
    }else{
         for(int i=1;i<=n/2;i++){
            vis[i][n-i]=1;
        }
    }
    printf("%d\n",(n-1)*n/2-n/2);
    for(int i=1;i<n;i++){
        for(int j=i+1;j<=n;j++){
            if(!vis[i][j]){
                printf("%d %d\n",i,j);
            }
        }
    }
    return 0;
}

posted @ 2021-03-16 08:38  hunxuewangzi  阅读(54)  评论(0编辑  收藏  举报