提出 #48426001


ソースコード 拡げる

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

typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;

#define rep(i,l,r) for(int i(l);i<=(r);++i)
#define per(i,r,l) for(int i(r);i>=(l);--i)
#define eb emplace_back
#define File(filename) freopen(filename ".in","r",stdin),freopen(filename ".out","w",stdout)

#ifdef EXODUS
	#define Debug(...) fprintf(stderr,__VA_ARGS__)
#else
	#define Debug(...) 0
#endif

//=========================================================================================================
// Something about IO

template<typename T>
void read(T &x){
	x=0;T flg=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')flg=-1;ch=getchar();}
	while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	x*=flg;
}
template<typename T,typename... Args>
void read(T &x,Args &...args){read(x),read(args...);}

//=========================================================================================================
// Define the global variables here.

bool membg=0;


constexpr int N=2e5+7;
int n;
vector<int>g[N];
int col[N],cur[N],anc[N];
char s[N];

bool memed=0;

//=========================================================================================================
// Code here.

bool dfs(int u){
	int cnt=0;
	for(auto v:g[u]){
		g[v].erase(find(g[v].begin(),g[v].end(),u));
		anc[v]=u;if(!dfs(v))return false;
		if(cur[v]==-1)cur[v]=col[u];
		cnt+=(cur[v]==col[u]);
	}
	if(cnt<(int)g[u].size()/2){
		return false;
	}
	else if(cnt==(int)g[u].size()/2){
		if(!anc[u]||(cur[anc[u]]!=-1&&cur[anc[u]]!=col[u]))return false;
		cur[anc[u]]=col[u];return true;
	}
	else{
		return true;
	}
}

void solve(){
	read(n);
	for(int i=1;i<=n;i++)g[i].clear(),cur[i]=-1,anc[i]=0;
	for(int i=1,u,v;i<n;i++)read(u,v),g[u].eb(v),g[v].eb(u);
	scanf("%s",s+1);
	for(int i=1;i<=n;i++)col[i]=(s[i]=='B');
	if(!dfs(1))return printf("-1\n"),void();
	if(cur[1]==-1)cur[1]=0;
	for(int i=1;i<=n;i++)putchar(cur[i]==0?'W':'B');
	printf("\n");
	return;
}


//=========================================================================================================

int main(){
	Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
	int timbg=clock();
	int T=1;read(T);
	while(T--)solve();
	int timed=clock();
	Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
	fflush(stdout);
	return 0;
}

提出情報

提出日時
問題 C - Dyed by Majority (Odd Tree)
ユーザ EXODUS
言語 C++ 17 (gcc 12.2)
得点 500
コード長 2454 Byte
結果 AC
実行時間 55 ms
メモリ 22524 KiB

コンパイルエラー

Main.cpp: In function ‘int main()’:
Main.cpp:18:28: warning: statement has no effect [-Wunused-value]
   18 |         #define Debug(...) 0
      |                            ^
Main.cpp:89:9: note: in expansion of macro ‘Debug’
   89 |         Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
      |         ^~~~~
Main.cpp:18:28: warning: statement has no effect [-Wunused-value]
   18 |         #define Debug(...) 0
      |                            ^
Main.cpp:94:9: note: in expansion of macro ‘Debug’
   94 |         Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
      |         ^~~~~
Main.cpp:90:13: warning: unused variable ‘timbg’ [-Wunused-variable]
   90 |         int timbg=clock();
      |             ^~~~~
Main.cpp:93:13: warning: unused variable ‘timed’ [-Wunused-variable]
   93 |         int timed=clock();
      |             ^~~~~
Main.cpp: In function ‘void solve()’:
Main.cpp:76:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   76 |         scanf("%s",s+1);
      |         ~~~~~^~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 1
AC × 27
セット名 テストケース
Sample 00-sample-001.txt
All 00-sample-001.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt
ケース名 結果 実行時間 メモリ
00-sample-001.txt AC 3 ms 8484 KiB
01-001.txt AC 9 ms 8488 KiB
01-002.txt AC 9 ms 8348 KiB
01-003.txt AC 9 ms 8488 KiB
01-004.txt AC 9 ms 8440 KiB
01-005.txt AC 8 ms 8364 KiB
01-006.txt AC 8 ms 8440 KiB
01-007.txt AC 8 ms 8448 KiB
01-008.txt AC 8 ms 8480 KiB
01-009.txt AC 40 ms 17588 KiB
01-010.txt AC 48 ms 17440 KiB
01-011.txt AC 44 ms 17512 KiB
01-012.txt AC 50 ms 17700 KiB
01-013.txt AC 31 ms 17148 KiB
01-014.txt AC 43 ms 17108 KiB
01-015.txt AC 45 ms 17112 KiB
01-016.txt AC 39 ms 17152 KiB
01-017.txt AC 42 ms 21576 KiB
01-018.txt AC 51 ms 22524 KiB
01-019.txt AC 53 ms 21608 KiB
01-020.txt AC 55 ms 21652 KiB
01-021.txt AC 29 ms 11268 KiB
01-022.txt AC 28 ms 11324 KiB
01-023.txt AC 29 ms 11132 KiB
01-024.txt AC 27 ms 10988 KiB
01-025.txt AC 30 ms 12172 KiB
01-026.txt AC 30 ms 12068 KiB