به هر عبارت منطقی که به صورت OR تعدادی از متغیرها به صورت xi یا ¯xi باشد، یک جمله (Clause) گفته میشود. مانند:
s1=x1∨¯x2∨x3∨x4∨¯x5
جملهی Horn به جملهای گفته میشود که در آن حداکثر یک متغیر به صورت بدون نقیض (یعنی به صورت xi) ظاهر میشود و بقیهی متغیرها با نقیض (به صورت ¯xj) ظاهر میشوند.
مسئلهی Horn−SAT به این صورت تعریف میشود: تعدادی از جملههای Horn با یکدیگر AND شدهاند، میخواهیم به متغیرهای x1,x2,...,xn آن طوری مقادیر true یا false نسبت بدهیم که کل عبارت مقدار true داشته باشد.
برنامهای بنویسید که با دریافت یک عبارت Horn (به صورت AND تعدادی جملهی Horn) مقادیر true یا false را طوری به متغیرها (x1,x2,...,xn) نسبت دهد که کل عبارت مقدار true بگیرد.
در خط اول فایل به ترتیب دو عدد n و m (n≤100,m≤1000) وجود دارد که n تعداد متغیرها است (x1,x2,...,xn) و m تعداد جملههای Horn در عبارت است.
بعد از خط اول m خط در فایل ورودی وجود دارد؛ در خط i ام در ابتدا عدد li (li≤100) تعداد متغیرها در جملهی i ام آمده و بعد از آن li عدد به صورت j یا −j آمده که j نشاندهندهی xj و −j نشاندهندهی ¯xj است.
اگر مسئله جواب ندارد، در خط اول خروجی پیغام No Solution
را بنویسید. در غیر این صورت فایل شامل n خط خواهد بود که در خط i ام مقدار T ( معادل با xi=true) یا مقدار F (معادل با xi=false) خواهد بود.