Processing math: 100%

المپدیا

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

ابزار کاربر

ابزار سایت


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

Horn-SAT

به هر عبارت منطقی که به صورت OR تعدادی از متغیرها به صورت xi یا ¯xi باشد، یک جمله (Clause) گفته می‌شود. مانند:

s1=x1¯x2x3x4¯x5

جمله‌ی Horn به جمله‌ای گفته می‌شود که در آن حداکثر یک متغیر به صورت بدون نقیض (یعنی به صورت xi) ظاهر می‌شود و بقیه‌ی متغیر‌ها با نقیض (به صورت ¯xj) ظاهر می‌شوند.

مسئله‌ی HornSAT به این صورت تعریف می‌شود: تعدادی از جمله‌های Horn با یکدیگر AND شده‌اند، می‌خواهیم به متغیرها‌ی x1,x2,...,xn آن طوری مقادیر true یا false نسبت بدهیم که کل عبارت مقدار true‌ داشته باشد.

برنامه‌ای بنویسید که با دریافت یک عبارت Horn (به صورت AND تعدادی جمله‌ی Horn) مقادیر true یا false را طوری به متغیر‌ها (x1,x2,...,xn) نسبت دهد که کل عبارت مقدار true بگیرد.

ورودی

در خط اول فایل به ترتیب دو عدد n و m (n100,m1000) وجود دارد که n تعداد متغیرها است (x1,x2,...,xn) و m تعداد جمله‌های Horn در عبارت است.

بعد از خط اول m خط در فایل ورودی وجود دارد؛ در خط i ام در ابتدا عدد li (li100) تعداد متغیرها در جمله‌ی i ام آمده و بعد از آن li عدد به صورت j یا j آمده که j نشان‌دهنده‌ی xj و j نشان‌دهنده‌ی ¯xj است.

خروجی

اگر مسئله جواب ندارد، در خط اول خروجی پیغام No Solution را بنویسید. در غیر این صورت فایل شامل n خط خواهد بود که در خط i ام مقدار T ( معادل با xi=true) یا مقدار F (معادل با xi=false) خواهد بود.

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

(معادل با عبارت ورودی (¯x1¯x2x3)(x1¯x2)(x3¯x2)(x3)(¯x4) و خروجی x1=true,x2=false,x3=true,x4=false)

ورودي نمونه خروجي نمونه
4 5
3 -1 -2 3
2 1 -2
2 3 -2
1 3
1 -4
T
F
T
F

ابزار صفحه