Delete Edges
Posted Jozky86
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delete Edges相关的知识,希望对你有一定的参考价值。
题意:
给出一个n个点的完全图,删一些三元环使得边数<n
输出所删的三元环
3<=n<=2000
题解:
肯定是结论题,但是我不会。。
结论:x+y+z=0(mod n)1<=x<y<z<=n所有解即可
证明过程可以看看下面博客讲的
讲解1
讲解2
我觉得当个结论,万一之后用到
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>
#define Debug(in) cout<<#in<<"="<<(in)<<endl
#define mm(a,x) memset(a,x,sizeof(a))
#define mkp(a,b) make_pair(a,b)
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define sync std::ios::sync_with_stdio(false);std::cin.tie(0)
#define endl '\\n'
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f,mod=1e9+7;
struct node{
int x,y,z;
};
vector<node>res;
int main(void)
{
sync;
int n;cin>>n;
for(int i=1;i<=n;++i)
for(int j=i+1;j<=n;++j)
{
int k=((n-i-j-1+n)%n)%n+1;
if(k<=j) continue;
res.push_back({i,j,k});
}
cout<<sz(res)<<endl;
for(auto x:res) cout<<x.x<<" "<<x.y<<" "<<x.z<<endl;
return 0;
}
//考虑边界!!!
//Think TWICE, Code ONCE!
以上是关于Delete Edges的主要内容,如果未能解决你的问题,请参考以下文章
为什么不使用G.add_edges_from()添加边缘,匹配G.edges()?
如何绘制 tf.image.sobel_edges 返回的图像张量