اصغر پرنده به یک عروسی دعوت شده است. در هنگام شام نوع غذا روی میز قرار دارند که به ترتیب از ۱ تا شماره گذاری شده اند. خانواده داماد که بسیار خسیس هستند از مهمان ها بابت شام پول میگیرند.
تعداد واحد های موجود از غذای ام ، و قیمت هر واحد از آن برابر با است. هربار که یک مهمان بشقابی برمیدارد، باید از غذای شماره ۱ تا غذای شماره حرکت کند و یک واحد از هر غذایی که تمام نشده بود بردارد و در نهایت دلار پول بپردازد. این کار را در صورتی میتوان انجام داد که از غذای ام حداقل یک واحد موجود باشد.
اصغر گشنه است، قیمت دلار بالا رفته و جمع پول هایی که در جیب و جورابش پنهان کرده روی هم دلار است. او میخواهد این پول را به طوری خرج کند که جمع قیمت غذاهایی که میخورد بیشینه شود. این مقدار بیشینه را به دست آورید.
در خط اول ورودی دو عدد و آمده اند.
در خط دوم، عدد که امین آنها است، و در خط بعدی هم عدد که امینشان برابر با است آمده اند.
خروجی برنامه تنها یک عدد است که برابر با بیشینه مقدار مجموع قیمت غذاهاست.
زیرمسئله | نمره | محدودیت |
---|---|---|
۱ | ۱۰۰ | بدون محدودیت اضافی |
ابتدا از غذای ۱ تا ۶ میرویم و در طول راه از غذاهای نوع ۱، ۲، ۴، ۵ و ۶ هرکدام یک واحد برمیداریم (از غذای نوع ۳ نمیتوان برداشت چون تعدادش ۰ است).
در مرحله بعد از غذای ۱ تا ۴ میرویم غذا های نوع ۲ و ۴ را برمیداریم.
در مرحله اول ۲ دلار و در مرحله دوم ۵ دلار هزینه کرده ایم که از پولمان که برابر با ۸ است کمتر است.
مجموع قیمت غذاها در مرحله اول برابر با ۲۳ و در مرحله دوم برابر با ۷ است.
اصغر پرنده در حال گشت زدن در جای خود بود که یک جایگشت تایی پیدا کرد. جویای نام جایگشت شد و فهمید که نامش است و عدد ام آن هم است. از آنجایی که اصغر یارانه میگیرد و از نظر اقتصادی تامین است، بیکار است و گرافی راسی میسازد و بین رئوس و در گراف یال میگذارد اگر کمتر از صفر باشد و همچنین و برابر نباشند.
اصغر میخواهد مولفههای همبندی گرافی که ساخته است را بدست آورد. از آنجایی که اصغر آنقدر هم بیکار نیست و ادمین یکی از چنلهای تلگرام است از شما میخواهد این کار را برایش انجام دهید.
در خط اول ورودی عدد آمده است.
در خط دوم، عدد که امین عدد نشان دهنده عضو ام جایگشت (یعنی ) است. میدانیم که در جایگشت تمام اعداد از ۱ تا و متفاوت اند.
در خط اول ورودی تعداد مولفههای همبندی گراف را چاپ کنید. در خطوط بعدی، در هر خط باید رئوس یک مولفه را چاپ کنید. عدد اول هر خط نشان دهنده تعداد رئوس مولفه و اعداد بعدی شماره رئوس درون این مولفه اند.
رئوس هر مولفه را بر حسب شماره رأس از کوچکترین به بزرگترین چاپ کنید. مولفهها را به ترتیب کوچکترین رأسشان از کوچکترین به بزرگترین چاپ کنید.
توجه کنید که خروجی یکتاست!
نمره دهی این سوال به این صورت است که اگر شما درصد از تستها را درست جواب بدهید نمره شما خواهد شد.
در ۱/۳ تستها کمتر از ۱۰۰۰ است.
گراف دو یال دارد که رئوس (۱,۳) و (۲,۳) را به هم وصل میکنند.
اصغر پرنده همانطور که از اسمش پیداست در یک درخت زندگی میکند. این درخت راس دارد که با یال به هم وصل شده اند. در هر راس این درخت یک گنده لات نشسته است.
هر گنده لات یکی از اسرار محرمانه دولت را میداند (اسراری که لاتها میدانند متفاوت اند). سازمان امنیت کشور که نمیخواهد اطلاعات پخش شود، تمام یالهای درخت را بسته است.
اکبر چرنده، برادر اصغر، که از نیروهای شورشی است تصمیم دارد یالها را باز کند تا اطلاعات پخش شوند. هر روز یا اکبر یک یال بسته را باز میکند و یا سازمان امنیت یک یال باز را میبندد.
با باز شدن هر یال دو لاتی که در دو سر یال نشسته اند، اسراری که میدانند را برای هم فاش میکنند و سپس هرکدام اسرار جدیدی که فهمیده اند را برای تمام لاتهایی که میتوانند با طی کردن تعدادی یال باز به آنها برسند فاش میکنند.
این عملیات تا روز ادامه پیدا کرد تا اینکه اکبر را توی گونی کرده و بردند. اصغر به ازای هریک از این روز شماره یالی که وضعیتش تغییر کرده را به شما داده و در نهایت میخواهد به ازای تا از لاتها، تعداد اسرار محرمانه ای که میدانند را به او بگویید.
در خط اول ورودی سه عدد و و آمده اند که تعداد رئوس درخت، تعداد روزهای عملیات، و تعداد کسانی که اصغر از شما تعداد اسراری که میدانند را میخواهد را نشان میدهند.
در خط ام از خط بعدی، دو عدد و آمده اند که شماره رئوس دو سر یال ام را نشان میدهند. (شماره دو سر یال از ۱ تا است)
در خط بعدی شماره یالهایی که عملیات روی آنها انجام شده آمده است. (شمارهها از ۱ تا است)
و خط بعدی هم نشان دهنده شماره رئوسی است که باید تعداد اسرار لاتهایشان را خروجی دهید. این عدد بین ۱ تا ، و متفاوت اند.
در خروجی باید جواب درخواست را در خطوط جداگانه چاپ کنید.
زیرمسئله | نمره | محدودیت |
---|---|---|
۱ | ۳۰ | |
۲ | ۳۰ | و |
۳ | ۴۰ | بدون محدودیت اضافی |
اگر فرض کنیم در ابتدای کار لات شماره اطلاعات شماره را دارد، اطلاعاتی که افراد در انتهای این 6 روز میدانند به این شکل خواهد بود:
یال شماره 1 باز میشود. یال شماره 2 باز میشود. یال شماره 1 بسته میشود. یال شماره 4 باز میشود. یال شماره 4 بسته میشود. یال شماره 3 باز میشود.