提出 #63110177


ソースコード 拡げる

// LUOGU_RID: 204468291
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define db double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define F(i,l,r) for(int i = (l);i <= (r);++i)
#define D(i,r,l) for(int i = (r);i >= (l);--i)
#define vt vector
#define mem(a,x) memset(a,x,sizeof a)
#define fi first
#define se second
#define pb push_back
#define bug cerr<<"LINE:"<<__LINE__<<" "
mt19937 rd(std::chrono::steady_clock::now().time_since_epoch().count());
constexpr int N = 1e6+10;
constexpr ll inf = 1e18,mod = 998244353;


ll read(){
	ll x = 0,f = 1;char c = getchar();
	for(;c < '0' || c > '9';c = getchar())if(c == '-')f = -1;
	for(;c >= '0' && c <= '9';c = getchar())x = (x<<1) + (x<<3) + c-'0';
	return x * f;
}

void cmax(ll &x,ll y){x = max(x,y);}
void cmin(ll &x,ll y){x = min(x,y);}

int n;
int fa[N],w[N];

struct DSU{
	int fa[N];
	void build(){F(i,1,n)fa[i] = i;}
	int find(int x){return x == fa[x] ? x : fa[x] = find(fa[x]);}
	void merge(int x,int y){
		x = find(x),y = find(y);
		if(x == y)return;
		fa[x] = y;
	}
}U;

struct node{
	ll s[2];
	bool operator < (const node x)const{return s[1] * x.s[0] < x.s[1] * s[0];}
	node operator + (const node x)const{return {s[0] + x.s[0],s[1] + x.s[1]};}
};
node v[N];
set<pair<node,int> >s;
ll val(node x,node y){return x.s[1] * y.s[0];}

void solve(){
	n = read();
	ll ans = 0;
	F(i,2,n)fa[i] = read();
	F(i,1,n)w[i] = read(),v[i].s[w[i]]++;
	F(i,2,n)s.insert({v[i],i});
	U.build();
	while(s.size()){
		auto it = s.begin();
		int x = (*it).se;
		int f = U.find(fa[x]);
		s.erase({v[x],x});
		ans += val(v[f],v[x]);
		if(f != 1)s.erase({v[f],f});
		U.fa[x] = f,v[f] = v[f] + v[x];
		if(f != 1)s.insert({v[f],f});
	}
	printf("%lld\n",ans);
}

int main(){
	int t = 1;
	while(t--)solve();
	return 0;
}



提出情報

提出日時
問題 F - 01 on Tree
ユーザ _XU_
言語 C++ 17 (gcc 12.2)
得点 1700
コード長 1810 Byte
結果 AC
実行時間 159 ms
メモリ 21740 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1700 / 1700
結果
AC × 3
AC × 74
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt, subtask_1_49.txt, subtask_1_50.txt, subtask_1_51.txt, subtask_1_52.txt, subtask_1_53.txt, subtask_1_54.txt, subtask_1_55.txt, subtask_1_56.txt, subtask_1_57.txt, subtask_1_58.txt, subtask_1_59.txt, subtask_1_60.txt, subtask_1_61.txt, subtask_1_62.txt, subtask_1_63.txt, subtask_1_64.txt, subtask_1_65.txt, subtask_1_66.txt, subtask_1_67.txt, subtask_1_68.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 1 ms 3648 KiB
sample_02.txt AC 1 ms 3708 KiB
sample_03.txt AC 1 ms 3652 KiB
subtask_1_01.txt AC 1 ms 3724 KiB
subtask_1_02.txt AC 83 ms 19732 KiB
subtask_1_03.txt AC 46 ms 12412 KiB
subtask_1_04.txt AC 106 ms 21284 KiB
subtask_1_05.txt AC 120 ms 20780 KiB
subtask_1_06.txt AC 19 ms 6908 KiB
subtask_1_07.txt AC 70 ms 16212 KiB
subtask_1_08.txt AC 29 ms 11404 KiB
subtask_1_09.txt AC 79 ms 16132 KiB
subtask_1_10.txt AC 23 ms 8528 KiB
subtask_1_11.txt AC 9 ms 5460 KiB
subtask_1_12.txt AC 54 ms 13496 KiB
subtask_1_13.txt AC 49 ms 11484 KiB
subtask_1_14.txt AC 57 ms 12680 KiB
subtask_1_15.txt AC 12 ms 5880 KiB
subtask_1_16.txt AC 20 ms 9284 KiB
subtask_1_17.txt AC 21 ms 7288 KiB
subtask_1_18.txt AC 71 ms 13684 KiB
subtask_1_19.txt AC 17 ms 6356 KiB
subtask_1_20.txt AC 53 ms 13652 KiB
subtask_1_21.txt AC 17 ms 7292 KiB
subtask_1_22.txt AC 85 ms 15828 KiB
subtask_1_23.txt AC 75 ms 14248 KiB
subtask_1_24.txt AC 59 ms 14412 KiB
subtask_1_25.txt AC 31 ms 10268 KiB
subtask_1_26.txt AC 72 ms 15060 KiB
subtask_1_27.txt AC 89 ms 16388 KiB
subtask_1_28.txt AC 47 ms 12852 KiB
subtask_1_29.txt AC 84 ms 18716 KiB
subtask_1_30.txt AC 60 ms 21604 KiB
subtask_1_31.txt AC 58 ms 21692 KiB
subtask_1_32.txt AC 93 ms 21696 KiB
subtask_1_33.txt AC 94 ms 21608 KiB
subtask_1_34.txt AC 102 ms 21640 KiB
subtask_1_35.txt AC 103 ms 21640 KiB
subtask_1_36.txt AC 125 ms 21740 KiB
subtask_1_37.txt AC 128 ms 21696 KiB
subtask_1_38.txt AC 105 ms 21680 KiB
subtask_1_39.txt AC 61 ms 21528 KiB
subtask_1_40.txt AC 56 ms 21600 KiB
subtask_1_41.txt AC 113 ms 21548 KiB
subtask_1_42.txt AC 97 ms 21696 KiB
subtask_1_43.txt AC 102 ms 21676 KiB
subtask_1_44.txt AC 103 ms 21600 KiB
subtask_1_45.txt AC 123 ms 21556 KiB
subtask_1_46.txt AC 124 ms 21608 KiB
subtask_1_47.txt AC 105 ms 21672 KiB
subtask_1_48.txt AC 40 ms 21616 KiB
subtask_1_49.txt AC 56 ms 21608 KiB
subtask_1_50.txt AC 118 ms 21704 KiB
subtask_1_51.txt AC 144 ms 21584 KiB
subtask_1_52.txt AC 159 ms 21552 KiB
subtask_1_53.txt AC 103 ms 21584 KiB
subtask_1_54.txt AC 98 ms 21672 KiB
subtask_1_55.txt AC 135 ms 21564 KiB
subtask_1_56.txt AC 144 ms 21676 KiB
subtask_1_57.txt AC 103 ms 21676 KiB
subtask_1_58.txt AC 96 ms 21612 KiB
subtask_1_59.txt AC 124 ms 21612 KiB
subtask_1_60.txt AC 133 ms 21692 KiB
subtask_1_61.txt AC 101 ms 21668 KiB
subtask_1_62.txt AC 99 ms 21568 KiB
subtask_1_63.txt AC 87 ms 21692 KiB
subtask_1_64.txt AC 95 ms 21644 KiB
subtask_1_65.txt AC 92 ms 21672 KiB
subtask_1_66.txt AC 78 ms 19772 KiB
subtask_1_67.txt AC 38 ms 12616 KiB
subtask_1_68.txt AC 91 ms 21364 KiB