المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۹:عملی:سوال ۱۳

زیر درخت

فرض کنید $T_1$ و $T_2$ دو درخت ریشه‌دار باشند که در هرکدام به هر راس یک عدد به نشانه‌ی برچسب آن راس نسبت داده شده باشد و هر راس حداکثر دو فرزند داشته باشد. درخت $T_1$ زیردرخت $T_2$ است اگر نگاشت یک‌به‌یک $f$ از مجموعه‌ راس‌های $T_1$ به مجموعه راس‌های $T_2$ وجود داشته باشد به طوری که:

  • به ازای هر راس $v$ از $T_1$، برچسب $v$ با برچسب $f(v)$ یکسان باشد.
  • به ازای هر دو راس $v$ و $w$ از $T_1$، $f(v)$ از اجداد $f(w)$ باشد اگر و تنها اگر $v$ از اجداد $w$ باشد.

برنامه‌ای بنویسید که $k$‌درخت $T_2،T_1$،… و $T_k$ با شرایط گفته‌ شده را از ورودی دریافت کند و تعیین کند که کدام یک زیردرخت دیگری است.

ورودي

خط نخست فایل ورودی شامل عدد $k$ است. درخطوط بعدی، مشخصات درختها به ترتیب به شکل ذیل آمده است. مشخصات هر درخت $n$ راسی در $n+1$ خط توصیف می‌شود: خط اول $n$ و شماره‌ی راس ریشه‌ی درخت، خط دوم $n$ عدد به نشانه‌ی برچسب راس‌ها با حفظ ترتیب و $n-1$ خط بعد نیمه‌ی فوقانی ماتریس مجاورت گراف را در بر دارد.

خروجي

در فایل خروجی ماتریس $M_{n\times n}$ را در $n$ خط با لحاظ فاصله بین درایه‌های هر سطر آن چاپ کنید. اگر درخت $T_i$ زیردرخت درخت $T_j$ باشد، درایه‌ی $M_ij$ را برابر یک و در غیر این صورت، برابر صفر قرار دهید. فرض کنید مقادیر $n$ و $k$ از ۱۰۰ بیش‌تر نیست. برچسب راس‌ها هم از بین اعداد قابل ذخیره‌سازی در یک متغیر از نوع Integer انتخاب می‌شوند.

ورودي و خروجي نمونه

ورودي نمونه خروجي نمونه
2
3 1
1 3 2
1 1
0
6 1
1 1 2 2 4 3
1 1 0 0 0
0 1 1 0
0 0 1
0 0
0
1 1
0 1

ابزار صفحه