QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#702101#6634. Central SubsetSoestxWA 22ms7948kbC++231.8kb2024-11-02 15:18:132024-11-02 15:18:15

Judging History

你现在查看的是最新测评结果

  • [2024-11-02 15:18:15]
  • 评测
  • 测评结果:WA
  • 用时:22ms
  • 内存:7948kb
  • [2024-11-02 15:18:13]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pll pair<int,int>
#define fi first
#define se second
typedef long long LL;
typedef unsigned long long ull;
int n,m,k;
const int N=1e6+10,M=5e4,mod=998244353;
int num[N],book[N];
int  res,cnt;

int h[N],e[N<<1],ne[N<<1],idx;

void add(int a,int b)
{
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
vector<int> vt;
int fa[N];
int find_fa(int x)
{
	if(x!=fa[x]) return fa[x]=find_fa(fa[x]);
	return fa[x];
}

bool uni(int a,int b)
{
	a=find_fa(a),b=find_fa(b);
	if(a==b) return 0;
	fa[a]=b;
	return 1;
}

int dfs(int id,int f)
{
	int dis=0;
	for(int i=h[id];i!=-1;i=ne[i])
	{
		int j=e[i];
		if(j==f) continue;
		int tmp=dfs(j,id)+1;
		dis=max(tmp,dis);
	}
	if(dis>=k)
	{
		vt.push_back(id);
		dis=0;
	}
	return dis;
}

int DFS(int id)
{
	DFS(2-id);
	return DFS(2-id)+1;
}

void solve() {

	cin>>n>>m;
	k=ceil(sqrt(1.0*n));
	vt.clear();
	idx=0;
	for(int i=1;i<=n;i++) h[i]=-1,fa[i]=i;
	while(m--)
	{
		int a,b;
		cin>>a>>b;
		if(uni(a,b))
		{
			add(a,b),add(b,a);
		}
	}
	int ddd;
	if(dfs(1,-1)+1>=k)
	vt.push_back(1);
	
	if(!vt.size()) vt.push_back(1);
	sort(vt.begin(),vt.end());
	
	if(vt.size()>k){
		ddd=DFS(1);
		cout<<"-1\n";
		return;
	}
	ddd=ddd*2+1;
	
	cout<<vt.size()<<endl;
	cout<<vt[0];
	int la=vt[0];
	for(int i=1;i<vt.size();i++) 
	{
		if(vt[i]==la) continue;
		la=vt[i];
		cout<<" "<<vt[i];
	}
	cout<<endl;
}


signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--)
    {
        solve();
    }
    return 0;
}
/*
 2
 4 3
 1 2
 2 3
 3 4
 6 7
 1 2
 2 3
 3 1
 1 4
 4 5
 5 6
 6 4
 
 1
 6 6
 1 2
 2 3
 3 4
 4 5
 5 6
 6 1
 
1
4 3
1 2
1 3
3 4
*/

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 7908kb

input:

2
4 3
1 2
2 3
3 4
6 7
1 2
2 3
3 1
1 4
4 5
5 6
6 4

output:

2
1 2
1
1

result:

ok correct (2 test cases)

Test #2:

score: 0
Accepted
time: 7ms
memory: 7728kb

input:

10000
15 14
13 12
5 4
9 8
11 12
15 14
10 9
14 13
2 3
2 1
6 5
10 11
3 4
7 6
8 7
6 5
2 1
2 4
4 6
2 3
3 5
10 9
8 3
9 4
5 6
5 10
3 2
5 4
2 7
1 2
4 3
2 1
2 1
2 1
2 1
9 8
9 8
5 4
1 2
6 5
3 4
3 2
7 8
7 6
2 1
1 2
14 13
3 10
5 6
2 9
11 4
2 3
2 1
8 7
13 6
5 4
5 12
6 7
4 3
7 14
16 15
2 3
2 1
6 10
6 9
6 4
9 11
...

output:

3
3 7 11
1
1
1
2
1
1
1
1
3
1 3 6
1
1
2
1 4
2
3 10
1
1
4
1 5 10 15
2
1 3
1
2
2
1 5
1
1
3
3 7 11
1
1
1
1
1
2
1
1
2
1 2
2
1 3
2
1 4
2
1 5
1
1
3
3 7 11
1
1
2
1 5
1
1
1
1
4
1 6 11 16
1
2
2
1 4
3
1 4 7
1
1
2
1 3
1
2
1
3
3
1 6 7
1
1
3
1 4 8
1
1
1
3
2
1 2
1
1
2
2 6
2
1 3
1
3
2
1 5
1
1
3
3 8 13
1
1
2
1 3
2
1...

result:

ok correct (10000 test cases)

Test #3:

score: -100
Wrong Answer
time: 22ms
memory: 7948kb

input:

100
2000 1999
529 528
885 884
1221 1222
375 374
245 244
758 757
711 710
1521 1522
1875 1874
749 750
823 822
1959 1958
1767 1766
155 154
631 632
825 824
1330 1331
457 456
1344 1343
1817 1818
413 414
582 583
1828 1827
1335 1336
654 655
162 161
1668 1667
1966 1967
1472 1471
1185 1184
518 517
1509 1510
...

output:

44
20 65 110 155 200 245 290 335 380 425 470 515 560 605 650 695 740 785 830 875 920 965 1010 1055 1100 1145 1190 1235 1280 1325 1370 1415 1460 1505 1550 1595 1640 1685 1730 1775 1820 1865 1910 1955
1
1
22
11 56 101 146 191 236 281 326 371 416 461 506 551 596 641 686 731 776 821 866 911 956
5
32 195...

result:

wrong answer Condition failed: "getMaxBfsDist(n, subset) <= csqrtn" (test case 74)