标签:
题意:建立一个连通图,它的所有点的度为k,且至少含有一个桥。
做法:先建立一个桥,再在桥两边建立两个度为k的连通图,通过这个桥连接在一起。
很显然k为偶数的时候无解。
#include<map> #include<string> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<vector> #include<iostream> #include<algorithm> #include<bitset> #include<climits> #include<list> #include<iomanip> #include<stack> #include<set> using namespace std; int main() { int n; cin>>n; if(n%2==0) { puts("NO"); return 0; } puts("YES"); if(n==1) { printf("2 1\n1 2"); return 0; } n++; cout<<2*n+2<<" "; if(n&1) cout<<n*n<<endl; else cout<<n*n-1<<endl; for(int i=1;i<=n;i++) { if(i<n-1) { cout<<i<<" "<<2*n+1<<endl; cout<<i+n<<" "<<2*n+2<<endl; } if(i==n-1) { cout<<i<<" "<<i+1<<endl; cout<<i+n<<" "<<i+1+n<<endl; } for(int j=i+1;j<=n;j++) { if(!((i&1)&&j==i+1)) { cout<<i<<" "<<j<<endl; cout<<i+n<<" "<<j+n<<endl; } } } cout<<2*n+1<<" "<<2*n+2<<endl; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
codeforce 550 D Regular Bridge
标签:
原文地址:http://blog.csdn.net/stl112514/article/details/47112191