# Light OJ 1047 – Neighbor House

```
/*
Link : http://www.lightoj.com/volume_showproblem.php?problem=1047
*/

#include &lt;bits/stdc++.h&gt;

#define pii pair &lt;int,int&gt;
#define sc scanf
#define pf printf
#define Pi 2*acos(0.0)
#define ms(a,b) memset(a, b, sizeof(a))
#define pb(a) push_back(a)
#define MP make_pair
#define oo 1&lt;&lt;29
#define dd double
#define ll long long
#define EPS 10E-10
#define ff first
#define ss second
#define MAX 10000
#define CIN ios_base::sync_with_stdio(0); cin.tie(0)
#define SZ(a) (int)a.size()
#define getint(a) scanf(&quot;%d&quot;,&amp;a)
#define getint2(a,b) scanf(&quot;%d%d&quot;,&amp;a,&amp;b)
#define getint3(a,b,c) scanf(&quot;%d%d%d&quot;,&amp;a,&amp;b,&amp;c)
#define loop(i,n) for(int i=0;i&lt;n;i++)
#define TEST_CASE(t) for(int z=1;z&lt;=t;z++)
#define PRINT_CASE printf(&quot;Case %d: &quot;,z)
#define all(a) a.begin(),a.end()
#define intlim 2147483648
#define inf 1000000
#define rtintlim 46340
#define llim 9223372036854775808
#define rtllim 3037000499
#define ull unsigned long long
#define I int

using namespace std;

int ara[21][3];
int dp[21][3];
int n;
int func(int indx, int color)
{
if(indx&gt;=n) return 0;
int&amp; ret=dp[indx][color];
if(ret!=-1) return ret;
int r1=0,r2=0;
if(color==0)
{
r1=ara[indx][1]+func(indx+1,1);
r2=ara[indx][2]+func(indx+1,2);
}
else if(color==1)
{
r1=ara[indx][0]+func(indx+1,0);
r2=ara[indx][2]+func(indx+1,2);
}
else if(color==2)
{
r1=ara[indx][0]+func(indx+1,0);
r2=ara[indx][1]+func(indx+1,1);
}
ret=min(r1,r2);
return ret;
}

int main()
{
///freopen(&quot;in.txt&quot;,&quot;r&quot;,stdin);
///freopen(&quot;out.txt&quot;,&quot;w&quot;,stdout);

int t;
cin&gt;&gt;t;
TEST_CASE(t)
{

cin&gt;&gt;n;
for(int i=0;i&lt;n;i++)
cin&gt;&gt;ara[i][0]&gt;&gt;ara[i][1]&gt;&gt;ara[i][2];
int ans=1000000;
loop(i,3)
{
ms(dp,-1);
int temp=ara[0][i]+func(1,i);
ans=min(ans,temp);
}
PRINT_CASE;
cout&lt;&lt;ans&lt;&lt;endl;
}
return 0;
}

```
0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments