QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#415671#7362. 割juan_123Judging//C++14632b2024-05-21 08:36:232024-11-23 17:00:34

Judging History

你现在查看的是测评时间为 2024-11-23 17:00:34 的历史记录

  • [2024-11-23 17:00:51]
  • 管理员手动重测本题所有提交记录
  • 测评结果:0
  • 用时:126ms
  • 内存:12732kb
  • [2024-11-23 17:00:34]
  • 管理员手动重测本题所有提交记录
  • 测评结果:Judging
  • 用时:140ms
  • 内存:12644kb
  • [2024-05-21 08:36:24]
  • 评测
  • 测评结果:0
  • 用时:140ms
  • 内存:12644kb
  • [2024-05-21 08:36:23]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
mt19937 rnd(time(0));
int ok[100005];
vector<int>p[200005];
int n,m;
const int M = 1000000;
int ans = 0;
signed main(){
	cin >> n >> m;
	for(int i = 1;i<=m;i++){
		int a,b;cin >>a  >> b;
		p[a].push_back(b),p[b].push_back(a);
	}
	for(int i = 0;i<M;i++){
	//	if(ans>=(m+1)/2)break;
		int now = rnd()%n+1,tt = 0,ww;
		for(int x:p[now])tt+=(ok[x]==ok[now]),ww+=(ok[x]!=ok[now]);
		if(tt>ww){
			ok[now]^=1;ans = ans-ww+tt;
		}
	}
	//cout << ans << endl;
	for(int i = 1;i<=n;i++)cout << ok[i] << ' ';cout<< endl;
	return 0;
}/*
4 6
1 2
1 3
1 4
2 3
2 4
3 4
*/