//poj 1237
//sep9
#include <iostream>
using namespace std;
char s[128];
int g[32][32],d[32];
int main()
{
int ans=0;
memset(g,0x7f,sizeof(g));
memset(d,0,sizeof(d));
while(1){
if(scanf("%s",s)==EOF)
break;
if(!strcmp(s,"deadend")){
int x=-1,y=-1;
for(int i=0;i<26;++i)
if(d[i]%2){
if(x==-1)
x=i;
else
y=i;
}
if(x>=0){
int i,j,k;
for(k=0;k<26;++k)
for(int i=0;i<26;++i)
for(int j=0;j<26;++j)
if(g[i][k]<g[26][26]&&g[k][j]<g[26][26])
g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
ans+=g[x][y];
}
printf("%d\n",ans);
memset(g,0x7f,sizeof(g));
memset(d,0,sizeof(d));
ans=0;
}else{
int len=strlen(s);
ans+=len;
int x=s[0]-'a',y=s[len-1]-'a';
g[x][y]=g[y][x]=len;
++d[x],++d[y];
}
}
return 0;
}
poj 1237 The Postal Worker Rings Once floyd算法水题
最新推荐文章于 2020-09-17 20:27:30 发布