حداکثر یال گراف


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

منظور از یک «گراف ساده» GG یک ساختار دوتایی (V,E)(V, E) است. که به VV «مجموعه‌ی راس‌ها» و به EE «مجموعه‌ی یال‌ها»ی GG می‌گویند.

اگر مجموعه‌ی راس‌های GG یا همان VV را یک مجموعه‌ی nn عضوی مثل {v1,v2,,vn}\{ v_1, v_2, \dots, v_n \} در نظر بگیرید. مجموعه EE یک مجموعه شامل تعدادی زیرمجموعه‌ی دو عضوی VV است.

برای مثال اگر V={1,2,3}V = \{1, 2, 3\} باشد، مجموعه EE می‌تواند E={{1,2},{1,3}}E = \{\{1, 2\}, \{1, 3\}\} باشد.

از شما می‌خواهیم برنامه‌ای بنویسید که با دریافت nn، بررسی کند که مجموعه EE حداکثر چند عضو دارد. به عبارت دیگر بررسی کنید یک گراف nn راسی، حداکثر چند یال دارد.

ورودی🔗

در تنها سطر ورودی، عدد صحیح و مثبت nn آمده است. 1n1091 \leq n \leq 10^9

خروجی🔗

در تنها سطر خروجی یک عدد صحیح، که نشان‌دهنده‌ی حداکثر تعداد اعضای EE است، چاپ کنید.

مثال‌ها🔗

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

1
Plain text

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

0
Plain text

اگر مجموعه V={v1}V = \{v_1\} باشد، زیرمجموعه‌ای دو عضوی ندارد. پس E=E = \emptyset است. پس حداکثر تعداد عضو EE برابر ۰ است.

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

2
Plain text

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

1
Plain text

اگر V={v1,v2}V = \{v_1, v_2\} باشد، تنها زیرمجموعه‌ی دو عضوی VV همان {v1,v2}\{ v_1, v_2 \} است پس، E={{v1,v2}}E = \{ \{v_1, v_2\}\} حداکثر تعداد یال را دارد، پس حداکثر تعداد عضو EE برابر ۱ است.

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

3
Plain text

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

3
Plain text

اگر V={v1,v2,v3}V = \{v_1, v_2, v_3\} باشد، ۳ زیرمجموعه‌ی دو عضوی VV عبارت است از {v1,v2}\{ v_1, v_2 \}، {v1,v3,}\{v_1, v_3, \} و {v2,v3}\{v_2, v_3\} است پس، E={{v1,v2},{v1,v3},{v2,v3}}E = \{ \{v_1, v_2\}, \{v_1, v_3\}, \{v_2, v_3\}\} حداکثر تعداد یال را دارد، پس حداکثر تعداد عضو EE برابر ۳ است.

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

4
Plain text

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

6
Plain text

اگر V={v1,v2,v3,v4}V = \{v_1, v_2, v_3, v_4\} باشد، ۶ زیرمجموعه‌ی دو عضوی VV عبارت است از {v1,v2}\{ v_1, v_2 \}، {v1,v3,}\{v_1, v_3, \}، {v1,v4}\{v_1, v_4\}، {v2,v3}\{v_2, v_3\}، {v2,v4}\{v_2, v_4\} و {v3,v4}\{v_3, v_4\} است پس، E={{v1,v2},{v1,v3},{v1,v4},{v2,v3},{v2,v4},{v3,v4}}E = \{ \{v_1, v_2\}, \{v_1, v_3\}, \{v_1, v_4\}, \{v_2, v_3\}, \{v_2, v_4\}, \{v_3, v_4\}\} حداکثر تعداد یال را دارد، پس حداکثر تعداد عضو EE برابر ‌۶ است.

ماتریس مجاورت


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

فرض کنید GG یک گراف nn راسی و mm یالی با مجموعه راس‌های {v1,v2,,vn}\{v_1, v_2, \dots, v_n\} باشد.

منظور از ماتریس مجاورت GG که معمولا آن را با AA نشان می‌دهند، یک ماتریس n×nn \times n است که درایه سطر iiام ستون jjام آن برابر ۱ است اگر و تنها اگر یال {vi,uj}\{v_i, u_j\} در EE موجود باشد.

گراف GG به شما داده می‌شود و از شما می‌خواهیم ماتریس مجاورت GG را چاپ کنید.

ورودی🔗

در سطر اول ورودی دو عدد صحیح nn و mm که با یک فاصله از هم جدا شده‌اند آمده است که به ترتیب نشان‌دهنده‌ی تعداد راس‌ها و یال‌های گراف GG است.

1n10001 \leq n \leq 1000 0mn(n1)20 \leq m \leq \frac{n(n - 1)}{2}

در mm سطر بعدی دو عدد uiu_i و viv_i که با یک فاصله از هم جدا شده‌اند آمده است که نشان‌دهنده‌ی وجود یال uiviu_i v_i در گراف GG است.

1uivin1 \leq u_i \neq v_i \leq n

تضمین می‌شود که هر یال موجود در GG دقیقا یکبار ورودی داده شود.

خروجی🔗

خروجی شامل nn سطر است که در هر سطر آن nn عدد صحیح بدون فاصله است.

عدد نوشته شده در سطر iiام ستون jjام نشان‌دهنده‌ی درایه ai,ja_{i, j} در ماتریس AA است.

مثال‌ها🔗

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

3 2
1 2
1 3
Plain text

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

011
100
100
Plain text

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

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

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

00010
00101
01001
10000
01100
Plain text

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

1 0
Plain text

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

0
Plain text

گراف مکمل


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

فرض کنید GG یک گراف ساده nn راسی mm یالی است که راس‌های آن از 11 تا nn شماره گذاری شده است.

منظور از گراف مکمل GG، که با GcG^c نشان می‌دهیم. گرافی‌است با همان nn راس ولی یال‌های آن همه یال‌هایی است که در GG نیامده است.

از شما qq پرسش داریم. در هر پرسش دو راس uu و vv به شما داده می‌شود و از شما می‌پرسیم که آیا یال {u,v}\{ u, v \} در گراف GcG^c وجود دارد یا نه.

ورودی🔗

در سطر اول ورودی دو عدد صحیح nn و mm که با یک فاصله از هم جدا شده‌اند آمده است که به ترتیب نشان‌دهنده‌ی تعداد راس‌ها و یال‌های گراف GG است.

1n1000001 \leq n \leq 100 \, 000 0mmin{n(n1)2,100000}0 \leq m \leq \min\{\frac{n(n - 1)}{2}, 100 \, 000 \}

در mm سطر بعدی در هر سطر دو عدد uiu_i و viv_i که با یک فاصله از هم جدا شده‌اند آمده است که نشان‌دهنده‌ی وجود یال uiviu_i v_i در گراف GG است.

1uivin1 \leq u_i \neq v_i \leq n

تضمین می‌شود گراف داده شده ساده است. یعنی بین هر دو راس حداکثر یک یال آمده است.

در سطر بعدی عدد صحیح و مثبت qq آمده است. 1q1000001 \leq q \leq 100 \, 000 در qq سطر بعدی در هر سطر دو عدد uju_j و vjv_j که با یک فاصله از هم جدا شده‌اند آمده است و نشان‌دهنده‌ی این پرسش است که آیا یال {uj,vj}\{ u_j, v_j \} در GcG^c وجود دارد یا نه.

1ujvjn1 \leq u_j \neq v_j \leq n

خروجی🔗

خروجی شامل qq سطر است و در سطر jjام در صورتی که یال {uj,vj}\{ u_j, v_j \} در GcG^c وجود دارد رشته YES و در غیراین صورت رشته NO را چاپ کنید.

مثال🔗

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

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

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

NO
NO
YES
Plain text

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

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

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

YES
YES
YES
NO
NO
NO
Plain text

گراف اویلری


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

فرض کنید GG یک گراف ساده nn راسی mm یالی است که راس‌های آن از 11 تا nn شماره گذاری شده است.

به یک گراف «اویلری» می‌گوییم اگر «گذری» داشته باشد که هر یال GG، دقیقا یکبار در آن آمده باشد.

منظور از یک گذر، دنباله‌ای از یال‌ها مثل e1,e2,,eke_1, e_2, \dots, e_k است که به ازای هر 2ik2 \leq i \leq k داشته باشیم ei1eie_{i - 1} \cap e_i \neq \emptyset.

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

ورودی🔗

در سطر اول ورودی دو عدد صحیح nn و mm که با یک فاصله از هم جدا شده‌اند آمده است که به ترتیب نشان‌دهنده‌ی تعداد راس‌ها و یال‌های گراف GG است.

1n1000001 \leq n \leq 100 \, 000 0mmin{n(n1)2,100000}0 \leq m \leq \min\{\frac{n(n - 1)}{2},100 \, 000\}

در mm سطر بعدی دو عدد uiu_i و viv_i که با یک فاصله از هم جدا شده‌اند آمده است که نشان‌دهنده‌ی وجود یال uiviu_i v_i در گراف GG است.

1uivin1 \leq u_i \neq v_i \leq n

تضمین می‌شود گراف داده شده ساده است. یعنی بین هر دو راس حداکثر یک یال آمده است.

خروجی🔗

در تنها سطر خروجی در صورت اویلری بودن گراف GG رشته YES و در غیر این‌ صورت رشته NO چاپ کنید.

مثال🔗

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

3 3
1 2
1 3
2 3
Plain text

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

YES
Plain text

بله، چون دنباله زیر وجود دارد: {1,2},{2,3},{1,3}\{1, 2\}, \{2, 3\}, \{1, 3\}

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

4 2
1 2
3 4
Plain text

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

NO
Plain text

خیر، چون هر این گراف تنها دو یال دارد که هیچ اشتراکی ندارند. پس نمی‌توان دنباله‌ای ساخت که هر دو یال در آن حضور داشته باشند و هر دو یال متوالی اشتراکی ناتهی داشته باشند.

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

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

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

YES
Plain text

بله، چون دنباله زیر وجود دارد: {1,2}{2,3},{3,4},{4,5},{3,5}\{1, 2\} \{2, 3\}, \{3, 4\}, \{4, 5\}, \{3, 5\}

گراف همیلتونی


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

فرض کنید GG یک گراف ساده nn راسی mm یالی است که راس‌های آن از 11 تا nn شماره گذاری شده است.

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

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

ورودی🔗

در سطر اول ورودی دو عدد صحیح nn و mm که با یک فاصله از هم جدا شده‌اند آمده است که به ترتیب نشان‌دهنده‌ی تعداد راس‌ها و یال‌های گراف GG است.

3n1003 \leq n \leq 100 nmn(n1)2n \leq m \leq \frac{n(n - 1)}{2}

در mm سطر بعدی دو عدد uiu_i و viv_i که با یک فاصله از هم جدا شده‌اند آمده است که نشان‌دهنده‌ی وجود یال uiviu_i v_i در گراف GG است.

1uivin1 \leq u_i \neq v_i \leq n

تضمین می‌شود گراف داده شده ساده است. یعنی بین هر دو راس حداکثر یک یال آمده است.

خروجی🔗

در تنها سطر خروجی یکی از جایگشت‌های اعداد 11 تا nn مثل v1,v2,,vnv_1, v_2, \dots, v_n را چاپ کنید به طوری که تشکیل یک دور همیلتونی بدهد؛ یعنی viv_i و vi%n+1v_{i \% n + 1} برای هر ii از 11 تا nn به یکدیگر یال داشته‌ باشند.

مثال‌ها🔗

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

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

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

3 4 5 1 2
Plain text

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

3 3
1 2
2 3
3 1
Plain text

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

1 2 3
Plain text