其他分享
首页 > 其他分享> > CF1682D Circular Spanning Tree

CF1682D Circular Spanning Tree

作者:互联网

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
char s[N];
int a[N];
int main() {
	int T;scanf("%d",&T);
	while(T--) {
		int n;scanf("%d",&n);
		scanf("%s",s+1);
		int tot=0;
		for(int i=1;i<=n;i++) if(s[i]=='1') {a[++tot]=i;}
		if(!tot||(tot&1)) {printf("NO\n");continue;}
		printf("YES\n");
		int lst1=0;
		for(int i=1;i<=tot;i++) {
			int nxt=a[(i==tot)?1:i+1];
			for(int j=a[i];;) {
				int k=(j==n)?1:j+1;
				if(k==nxt) {
					if(i==1) {lst1=j;}
					else if(i==2) {printf("%d %d\n",lst1,j);}
					else {printf("%d %d\n",a[1],j);}
					break;
				}
				else {printf("%d %d\n",j,k);}
				j=k;
			}
		}
	}
	return 0;
}

标签:度数,no,int,往后,scanf,第一组,Tree,Spanning,CF1682D
来源: https://www.cnblogs.com/bestime/p/16309296.html