讨论 / <青青的音乐游戏>为什么无输出。。不要改对,改的有输出就行。。。
lx99410 2011-10-06 04:58:00
点我顶贴 收藏 删除
#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 tot;scanf("%d",&tot);

for(int q=1;q<=tot;q++){

N=getint();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 duyhb5ds@2011-10-02 05:26:00
回复 删除
去掉\n

李想,注意,在RQNOJ上,所有输出数据后面都不能有空行或者空格!

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

去掉\n

#2 lx99410@2011-10-03 20:39:00
回复 删除
回复 沙发duyhb5ds 的帖子

楼上,你有两个错误

1、这是多组数据,去掉\n,完全错误。

2、根本不是格式问题,这样该也不行。

#3 阿德姆@2011-10-06 03:45:00
回复 删除
我也无输出。。。不明白怎么回事
#4 ·August·@2011-10-06 04:58:00
回复 删除
同问

RT

查看更多回复
提交回复