讨论 / <青青的音乐游戏>评测无输出是怎么搞的??
lx99410 2011-09-29 02:38:00
点我顶贴 收藏 删除
RT!!

急求。。。

#include<stdio.h>

#include<algorithm>

using namespace std;

const int maxn=1001;

const int maxp=17;

const int INF=1<<29;

struct node{int a,b;}ico[maxn];

int f[maxp][maxp][maxp],v[maxp][maxp],N,ans;

inline bool cmp(struct node x,struct node y){return x.a<x.b;}

inline int getint(){

int d=0,flag=0; char ch=' ';

while(!isdigit(ch=getchar()))if(ch=='-')break;

if(ch=='-')flag=1;else d=ch-48;

while(isdigit(ch=getchar()))d=d*10+ch-48;

if(flag)return -d;else return d;

}

inline void search(int i,int j,int k,int l){

if(l>N){if(f[i][j][k]<ans)ans=f[i][j][k];}

else{int m=ico[l].b;

if(f[m][j][k]>=f[i][j][k]+v[i][m]){

f[m][j][k]=f[i][j][k]+v[i][m];

search(m,j,k,l+1);

}

if(f[i][m][k]>=f[i][j][k]+v[j][m]){

f[i][m][k]=f[i][j][k]+v[j][m];

search(i,m,k,l+1);

}

if(f[i][j][m]>=f[i][j][k]+v[k][m]){

f[i][j][m]=f[i][j][k]+v[k][m];

search(i,j,m,l+1);

}

}

}

int main(){int t;scanf("%d",&t);

while(t--){

scanf("%d",&N);ans=(1<<31)-1;

for(int i=1;i<=N;i++)ico[i].a=getint(),ico[i].b=getint();

for(int i=1;i<=16;i++)

for(int j=1;j<=16;j++){

v[i][j]=getint();

for(int k=1;k<=16;k++)f[i][j][k]=INF;

}f[1][1][1]=0;

sort(ico+1,ico+1+N,cmp);

search(1,1,1,1);

printf("%d\n",ans);

}

return 0;

}

#1 帐号@2011-09-29 02:38:00
回复 删除
me too!

觉得自己的程序没错

而且有p语言的跟我的程序如出一辙

但他绿了

我红了。。。

查看更多回复
提交回复