توپولو‌های به هم چسبیده


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

پیمان به علی قول داده است که در آموزش درس الگوریتم دوره تابستان به او کمک خواهد کمک کرد. مشکل اینجاست که او در مشهد زندگی می‌کند و دوست ندارد مدت زیادی از خانه‌اش دور باشد. به همین دلیل علی از او خواسته تنها دو مبحث از nn مبحث درس الگوریتم را آموزش بدهد.

درس الگوریتم nn مبحث دارد که هر کدام از مبحث‌ها ممکن است پیش‌نیاز تعدادی از مبحث‌های دیگر باشند. ترتیب آموزش مبحث‌ها در دوره‌ی تابستان مشخص نیست ولی می‌دانیم که روابط پیش‌نیازی در این ترتیب رعایت خواهند شد. (اگر مبحثی پیش‌نیاز یک مبحث دیگر باشد قطعاً زودتر آموزش داده می‌شود) هم‌چنین می‌دانیم که آموزش یک مبحث دقیقاٌ یک روز طول می‌کشد و طبق برنامه قرار است در طی nn روز تمامی مبحث‌های درس الگوریتم آموزش داده شود.

پیمان در نظر دارد که در طی یک سفر دو روزه به تهران به قول خود عمل کند، دو مبحث در درس الگوریتم آموزش دهد، و به خانه برگردد. به همین خاطر او باید دو مبحث را به نحوی انتخاب کند که در هر ترتیبی از مبحث‌ها که برای آموزش الگوریتم انتخاب می‌شود، آن دو مبحث در دو روز متوالی در برنامه بیایند. هم‌چنین پیمان دوست ندارد مبحث‌هایی که آموزش می‌دهد نامرتبط باشند و می‌خواهد به شکلی آن دو مبحث را انتخاب کند که یکی از آن‌ها پیش‌نیاز دیگری باشد. او به چه روش‌هایی می‌تواند دو مبحث را با شرایط دلخواه‌ش انتخاب کند؟

ورودی🔗

در خط اول ورودی دو طبیعی nn و mm، نشان‌دهنده‌ی تعداد مبحث‌های درس الگوریتم و تعداد روابط پیش‌نیازی بین مبحث‌ها، آمده است. در mm خط بعدی ورودی، در هر خط دو عدد طبیعی viv_i و uiu_i آمده است که نشان‌دهنده‌ی این است که مبحث ‌viv_i پیش نیاز مبحث uiu_i است. تضمین می‌شود هر رابطه پیش‌نیازی بین دو مبحث حداکثر یک بار در ورودی آمده است. تضمین می‌شود ترتیبی برای آموزش مبحث‌ها وجود دارد که در آن تمام رابطه‌های پیش‌نیازی رعایت شده باشد. 1n,m500 0001 \le n, m \le 500\ 000 1m(n2)1 \le m \le \binom{n}{2} 1vi,uin,viui1 \le v_i, u_i \le n, v_i \ne u_i

خروجی🔗

در خط اول خروجی kk تعداد روش‌هایی که پیمان می‌تواند دو مبحث با شرایط گفته شده را انتخاب کند چاپ کنید. در kk خط بعدی خروجی در هر خط دو عدد aia_i و bib_i را چاپ کنید به طوری که مبحث aia_i پیش‌نیاز مبحث bib_i باشد و این دو مبحث یک روش دلخواه پیمان باشند. ترتیب خروجی باید به شکلی باشد که به ازای هر ii و jj که i<ji < j، ai<aja_i < a_j یا اگر ai=aja_i = a_j، bi<bjb_i < b_j.

زیرمسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۹ n9n \le 9
۲ ۲۱ n,m1 000n, m \le 1\ 000
۳ ۱۷ n1 000n \le 1\ 000
۴ ۵۳ بدون محدودیت اضافی

مثال🔗

ورودی نمونه ۱🔗

4 4
1 2
1 3
2 4
3 4
Plain text

خروجی نمونه ۱🔗

0
Plain text

ورودی نمونه ۲🔗

6 5
1 2
2 3
3 4
3 5
5 6
Plain text

خروجی نمونه ۲🔗

2
1 2
2 3
Plain text

ورودی نمونه ۳🔗

4 6
4 3
4 2
4 1
3 2
3 1
2 1
Plain text

خروجی نمونه ۳🔗

3
2 1
3 2
4 3
Plain text

نان بیار، کباب ببر


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

در تورنمنت جهانی «نان‌بیار، کباب‌ببر»، ورزشکاران با قدرت دستهایشان شناخته می‌شوند. در این مسابقات، nn ورزشکار شرکت‌ کرده‌اند که قدرت دست راست ورزشکار ii-ام، rir_i و قدرت دست چپش lil_i است. در این مسابقات، در هر مرحله، مسابقه‌ای بین دو ورزشکار انجام می‌شود و فرد بازنده از تورنمنت حذف می‌شود. بنابراین بعد از n1n-1 مرحله، تنها یک فرد در تورنمنت باقی‌ می‌ماند که مدال طلای مسابقات را دریافت می‌کند.

اگر مسابقه‌ای بین ورزشکار ii و jj انجام شود، ورزشکار ii شانس پیروزی در این مسابقه را دارد اگر li>rjl_i > r_j و یا ri>ljr_i > l_j باشد.

برنامه‌ای بنویسید که با گرفتن قدرت دست‌های ورزشکاران، ورزشکارانی را که شانس کسب مدال طلای مسابقات را دارند، پیدا کند.

ورودی🔗

در خط اول ورودی عدد طبیعی nn، تعداد ورزشکاران، آمده است. در هر یک از nn خط بعدی، قدرت دست‌های ورزشکاران آمده است. در خط ii از این خطوط، به ترتیب دو عدد طبیعی rir_i و lil_i آمده است که نشان‌دهنده‌ی قدرت دست راست و دست چپ ورزشکار ii است. تضمین می‌شود تمامی lil_iها و rir_iها متمایز هستند.

1n200 0001\leq n \leq 200\ 000 1li,ri2×n1\leq l_i, r_i\leq 2 \times n

خروجی🔗

در تنها خط خروجی یک رشته‌ی nn حرفی از 0 و 1 چاپ کنید که 1 بودن حرف iiام این رشته نشان‌دهنده‌ی این است که ورزشکار iiام شانس قهرمانی دارد.

زیرمسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۱۲ n20n\le 20
۲ ۱۶ n200n\le 200
۳ ۲۸ n2 000n \le 2\ 000
۴ ۴۴ بدون محدودیت اضافی

مثال🔗

ورودی نمونه ۱🔗

2
1 2
3 4
Plain text

خروجی نمونه ۱🔗

01
Plain text

ورودی نمونه ۲🔗

4
1 8
6 7
5 4
3 2
Plain text

خروجی نمونه ۲🔗

1111
Plain text

تبدیل گراف


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

دو گراف nn راسی به شما داده شده است که راس‌های آن‌ها از 11 تا nn شماره‌گذاری شده اند. در هر مرحله می‌توان یال‌های متصل به یک راس در گراف اول را یک بار به صورت ساعتگرد یا پادساعتگرد چرخاند.

عمل چرخاندن یک راس مانند vv به این شکل انجام می‌شود که در ازای هر یال از vv به uu در گراف، یک یال جدید از vv به nextv(u)next_v(u) قرار داده می‌شود و تمامی یال‌های قدیمی راس vv پاک می‌شود.

برای حرکت چرخاندن ساعتگرد، تابع nextnext به شکل زیر تعریف می‌شود:

nextv(u)={u1,u1vu2,u1=v next_{v}(u)= \begin{cases} u \oplus 1, & u \oplus 1 \ne v \\ u \oplus 2, & u \oplus 1 = v \end{cases}

برای چرخاندن پادساعتگرد نیز تابع nextnext به طور مشابهی ساخته می‌شود: nextv(u)={u1,u1vu2,u1=v next_{v}(u)= \begin{cases} u \oplus -1, & u \oplus -1 \ne v \\ u \oplus -2, & u \oplus -1 = v \end{cases}

منظور از عملگر \oplus جمع دوری است که به شکل زیر تعریف می شود:

ij={i+jmodn,i+jmodn0n,i+jmodn=0 i \oplus j = \begin{cases} i + j \mod n, & i + j \mod n \ne 0\\ n, & i + j \mod n = 0 \end{cases}

هدف تبدیل گراف اول به گراف دوم در تعدادی حرکت است. آیا این کار امکان پذیر است؟

ورودی🔗

در خط اول ورودی عدد طبیعی nn، تعداد راس‌های گراف‌ها آمده است. در nn خط بعدی از ورودی در هر خط یک رشته‌ی nn حرفی از 0 و 1 آمده است که ماتریس مجاورت گراف اول را نشان می‌دهد و 1 بودن حرف jjام خط iiام وجود یک یال از ii به jj در گراف اول را نشان می‌دهد. در nn خط بعدی به حالت مشابه ماتریس مجاورت گراف دوم آمده است. تضمین می‌شود ماتریس‌های ورودی متقارن هستند و درایه‌های روی قطرشان برابر با صفر است.

1n501 \le n \le 50

خروجی🔗

در صورتی که نمی‌توان گراف اول را به گراف دوم تبدیل کرد در یک خط عبارت impossible را چاپ کنید. در غیر این‌صورت ابتدا تعداد حرکات لازم برای تبدیل گراف اول به گراف دوم را چاپ کنید و در خطوط بعدی حرکات را به شکل - v یا + v چاپ کنید. - v یک چرخاندن ساعتگرد بر روی راس vv و + v یک چرخاندن پادساعتگرد بر روی راس vv را نشان می‌دهد. دقت کنید لزومی ندارد که تعداد حرکات مینیمم باشد و جواب شما اگر کمتر از 300 000300\ 000 حرکت داشته باشد قابل قبول است.

زیرمسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۱۱ n7n \le 7
۲ ۱۱ تضمین می‌شود درجه هر راس در گراف‌ها دقیقاً یک است.
۳ ۲۲ تضمین می‌شود گراف‌ها درخت هستند.
۴ ۵۶ بدون محدودیت اضافی

مثال🔗

ورودی نمونه ۱🔗

4
0101
1000
0001
1010
0011
0001
1000
1100
Plain text

خروجی نمونه ۱🔗

10
+ 2
+ 2
- 3
+ 2
+ 4
- 1
+ 4
+ 1
- 4
- 4
Plain text