Taraneh
اخیرا باستانشناسان موفق به کشف یک گنجینه از نامههای بسیار قدیمی شدهاند که به شیوهی پیچیدهای رمزگذاری شدهاند. در انتهای هر نامهیک گراف رسم شده است و کلید رمزگشایی نامه برابر با تعداد تطابقهای کامل این گراف است. پس از بررسی گرافها مشخص شد که در هر گراف تعدادی از رئوس قرمز و سایر رئوس آبی هستند و رنگ دو سر هر یال متفاوت است. همچنین تعداد رئوس قرمز و آبی برابر است.
با تلاش شبانهروزی دانشمندان، الگوریتم متفاوتی برای رمزگشایی نامهها به دست آمد که برای رمزگشایی نامه تنها به باقیماندهی کلید نامه بر $4$ نیاز دارد. شما باید به باستانشناسان کمک کنید که باقیماندهی کلید نامه بر $4$ را محاسبه کنند.
پیادهسازی
در این سوال شما باید تابع زیر را پیادهسازی کنید.
int findKey(int n, int m, int *u, int *v)
این تابع $t$ بار فراخوانی میشود. تابع را طوری پیادهسازی کنید که با ورودی گرفتن گراف انتهای یک نامه، باقیماندهی کلید آن نامه بر $4$ را مشخص کند.
- $n$: گراف $n$ راس قرمز و $n$ راس آبی دارد. رئوس هر رنگ به طور مجزا با اعداد $0$ تا $n - 1$ شمارهگذاری شدهاند.
- $m$: تعداد یالهای گراف انتهای نامه
- $u, v$: دو آرایه به طول $m$. به ازای هر $i$ $(0 \le i \le m - 1)$ یک یال بین راس قرمز با شمارهی $u_i$ و راس آبی با شمارهی $v_i$ وجود دارد.
ارزیاب نمونه
ارزیاب نمونه ورودی را به صورت زیر میخواند: در خط اول عدد $t$، تعداد موارد آزمون آمده است. سپس به ازای هر مورد آزمون، در یک خط دو عدد $n$ و $m$ آمده است. در هر یک از $m$ خط بعد، دو عدد آمده است که عدد خط $i$ ام $u_{i - 1}$ و $v_{i - 1}$ است.
زیرمسئلهها
- زیرمسئلهی اول (۲۹ نمره): حداقل یکی از مولفههای گراف با $C_4$ یکریخت است.
- زیرمسئلهی دوم (۲۹ نمره): حداقل دو راس از یک بخش وجود دارند که مجموعهی رئوس همسایهی آنها یکسان است.
- زیرمسئلهی سوم (۴۲ نمره): بدون محدودیت اضافی.
محدودیتها
- محدودیت زمان: ۴ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
- $1 \le t \le 10$
- $1 \le n \le 50$
- $0 \le m \le n^2$
- $0 \le u_i, v_i \le n - 1$
- گراف یال چندگانه ندارد.
ورودی و خروجی نمونه
| ورودی نمونه | خروجی نمونه |
|---|---|
| 1 5 13 0 0 0 1 0 2 0 3 0 4 1 1 1 0 2 2 3 3 3 0 4 0 4 4 2 0 | 1 |
| < سوال قبل | سوال بعد > |