其他分享
首页 > 其他分享> > 洛谷 P1989 无向图三元环计数

洛谷 P1989 无向图三元环计数

作者:互联网

晚上abc的G题考到了,听说是典中典
搞了一下O(m*sqrt(m))的写法
但是在atcoder超时,明天补bitset的写法

时间复杂度的证明

使用bitset的题解

#include<bits/stdc++.h>
using namespace std;

#define fr first
#define se second
#define et0 exit(0);

typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef unsigned long long ULL;

const int INF = 0X3f3f3f3f, N = 1e5 + 10, MOD = 1e9 + 7;
const double eps = 1e-7;

int vis[N];

vector<int> g[N];

void work() {
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%d %d",&x,&y);
		g[x].push_back(y);
		g[y].push_back(x);
	}
	
	int res=0;
	for(int i=1;i<=n;i++){
		for(int j:g[i])
			if(g[i].size()>g[j].size() || g[i].size()==g[j].size() && i<j)
				vis[j]=i;
		for(int j:g[i])
			if(g[i].size()>g[j].size() || g[i].size()==g[j].size() && i<j)
				for(int k:g[j])
					if(g[j].size()>g[k].size() || g[j].size()==g[k].size() && j<k)
						if(vis[k]==i)
							res++;
	}
	
	cout<<res<<endl;
}

signed main() {
	
	work();
	
	return 0;
}

标签:typedef,洛谷,int,long,无向,ig,&&,P1989,size
来源: https://www.cnblogs.com/xhy666/p/16439096.html