本文主要是介绍51nod 1445:变色DNA 最短路变形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
每组测试数据有相同的结构构成:
每组数据第一行一个整数N,2<=N<=50。
之后有N行,每行N个字符,表示狼的变色矩阵,矩阵中只有‘Y’与‘N’两种字符,第i行第j列的字符就是colormap i i j j。
3 3 NYN YNY NNN 8 NNNNNNNY NNNNYYYY YNNNNYYN NNNNNYYY YYYNNNNN YNYNYNYN NYNYNYNY YYYYYYYN 6 NYYYYN YNYYYN YYNYYN YYYNYN YYYYNN YYYYYN
1 0-1
模板题。
代码如下:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int dis[101][101]; int dis1[100001]; char a[100000]; int book[100001]; int inf=0x3f3f3f3f; int main() {int n,i,j,m,v;scanf("%d",&n);while(n--){memset(dis1,0,sizeof(dis1));memset(book,0,sizeof(book));scanf("%d",&m);for(i=0;i<m;i++){for(j=0;j<m;j++){dis[i][j]=0x3f3f3f3f;}}for(i=0; i<m; i++){int tot=0;scanf("%s",a);for(j=0; j<m; j++){if(a[j]=='Y'){dis[i][j]=tot++;}}} // for(i=0;i<m;i++) // { // for(j=0;j<m;j++) // { // printf("%d ",dis[i][j]); // } // printf("\n"); // }int min1,u=0;for(i=0;i<m;i++){dis1[i]=dis[0][i];}for(i=0;i<m-1;i++){min1=inf;for(j=0;j<m;j++){if(book[j]==0&&dis1[j]<min1){min1=dis1[j];u=j;}}book[u]=1;for(v=0;v<m;v++){//printf("%d\n",v);// printf("1");if(dis[u][v]<inf){if(dis1[v]>dis[u][v]+dis1[u])dis1[v]=dis[u][v]+dis1[u];}}}if(dis1[m-1]>=inf){printf("-1\n");}else{printf("%d\n",dis1[m-1]);}}return 0; }
这篇关于51nod 1445:变色DNA 最短路变形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!