سلام دوست عزیز😃👋

به مسابقه «کدکاپ ۸ - دست‌گرمی» خوش آمدی!

لینک‌های مفید برای شرکت در مسابقه:

این مسابقه هیچ تاثیری در رقابت‌های کدکاپ ندارد و صرفاً برای دست‌گرمی شما است.

موفق باشید و بهتون خوش بگذره 😉✌

تبدیل به درخت


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

یک گراف ساده به نام GG با nn راس و mm یال داریم. راس‌های این گراف با اعداد 11 تا nn شماره‌گذاری شده‌اند. در هر عملیات می‌توانیم یکی از دو عدد صحیح و مثبت مثل uu و vv را انتخاب کنیم به طوری که 1uvn1 \leq u \neq v \leq n و یکی از دو عملیات زیر را انجام دهیم اگر یال uvuv در GG موجود است، آن را حذف کنیم. اگر یال uvuv در GG موجود نیست، آن را به GG اضافه کنیم.

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

ورودی🔗

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

1n1000001 \leq n \leq 100 \, 000 0m5000000 \leq m \leq 500 \, 000

در mm سطر بعدی،‌ در هر سطر، دو عدد صحیح uu و vv که با یک فاصله از هم جدا شده‌اند داده می‌شود. uvuv یک یال از GG است.

1u<vn1 \leq u \lt v \leq n

خروجی🔗

کمترین تعداد عملیات لازم برای تبدیل GG به یک درخت.

مثال‌ها🔗

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

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

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

2
Plain text

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

3 2
1 2
1 3
Plain text

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

0
Plain text
راهنمایی اول

گراف GG درخت است اگر و تنها اگر همبند باشد و هیچ دوری نداشته باشد.

راهنمایی دوم

اگر GG دارای cc مولفه‌ی همبندی باشد، به حداقل c1c - 1 یال نیاز داریم که آن را همبند کنیم.

اگر یک مولفه‌ی همبندی GG دارای nin_i راس و mim_i یال باشد، باید یک زیردرخت فراگیر آن که شامل ni1n_i - 1 یال است را نگه‌داریم و mini+1m_i - n_i + 1 یال دیگر را از آن مولفه‌همبندی حذف کنیم. (با وجود این یال‌ها دور گراف به‌وجود می‌آید.)

راهنمایی سوم

اگر مجموع یال‌های مورد نیاز برای حذف را محاسبه کنید،‌ می‌بیند که فقط به مقدار cc نیاز دارید و می‌توانید آن را با استفاده از الگوریتم‌های مثل dfs، bfs یا dsu بدست آورید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.