RT,樣例莫名多了個5,輸出72
#include<cstdio>
#include<utility>
#include<cstring>
using namespace std;
#define mkpr(a,b) make_pair(a,b)
int n,x,y;long long a[11][11],z,ans;
struct Build_Map//建圖
{
pair<int,int> odr[20];//已經走過的順序
long long val;//價值
int rp=1;//處理目前數組儲存的順序
}mp[11][11];
long long fw()//貪心訪問
{
for(int i=2;i<=n;i++)
{
for(int j=2;j<=n;j++)
{
if(mp[i-1][j].val>mp[i][j-1].val)
{
mp[i][j].val=a[i][j]+mp[i-1][j].val;
mp[i][j].odr[mp[i][j].rp++]=mkpr(i-1,j);
}
else
{
mp[i][j].val=a[i][j]+mp[i][j-1].val;
mp[i][j].odr[mp[i][j].rp++]=mkpr(i,j-1);
}
//貪心思想
}
}
return mp[n][n].val;
}
void cllg()//處理路過的方塊
{
for(int i=1;i<=2*n;i++)
a[mp[n][n].odr[i].first][mp[n][n].odr[i].second]=0;
}
int main()
{
scanf("%d",&n);
while(scanf("%d%d%lld",&x,&y,&z)&&(x||y||z))a[x][y]=z;
ans=fw();
cllg();
memset(mp,0,sizeof mp);
ans+=fw();
printf("%lld",ans);
return 0;
}