فهرست مندرجات

logic Trees

بعد از گذراندن درس‌های مدار‌ منطقی و طراحی الگوریتم در ترم گذشته، پالرمو (دقت کنید که این اسم باشگاه یا مکان نیست، اسم یک فرد واقعی است!)‎ به فکر ارائه‌ی یک نوع درخت جدید، با نام ‎«درخت منطقی‎» افتاد. در‌خت منطقی یک درخت وزن‌دار است که بر روی هر یال آن علاوه بر یک عدد طبیعی، یکی از سه عملگر ‎$\{and‎, ‎or‎, ‎xor\}$‎ نیز نوشته شده است. برای هر یال ‎$uv$‎‌ در این درخت ‎$w_{uv}$‎ نمایان‌گر وزن آن یال و ‎$\text{op}_{uv} \in \{and‎, ‎or‎, ‎xor\}$‎ نمایان‌گر عملگر روی آن یال می‌باشد.

به ازای رأس‌های ‎$a$‎ و ‎$b$‎ و عدد طبیعی ‎$x$‎ بر روی این درخت، ‎$f(a,b,x)$‎ به صورت زیر تعریف می‌شود:

با ‎«انتشار»‎ عدد ‎$x$‎ از روی راس ‎$a$‎ به کل درخت، ارزش هر راس ‎$b$‎ به اندازه ‎$f(a,b,x)$‎ افزایش می‌یابد. حال پالرمو که این ترم دستیار آموزشی درس گراف‌های منطقی است، از دانشجویان خواسته تا برنامه‌ای بنویسند که یک درخت منطقی و تعدادی دستور انتشار را به عنوان ورودی گرفته و ارزش راس‌های درخت را بعد از انجام تمامی انتشار‌ها محاسبه‌ کند. ارزش تمامی راس‌های درخت در ابتدا برابر با صفر است. حال وظیفه‌ی شما نوشتن برنامه‌ای برای پاسخ به این سوال چالشی آقای پالرمو است.

ورودی

خروجی

در تنها سطر خروجی ارزش راس‌های ‎$1$‎ تا ‎$n$‎‌ را بعد از انجام انتشار‌ها چاپ کنید.

زیرمسئله‌ها

محدودیت‌ها

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
4 3
1 2 1 and
2 3 2 or
3 4 3 xor
1 10
2 20
3 30
10 50 54 51‎