此题甚水,求最短路径即可,注意在读入数据的时候若遇上两点之间有多条路经将路径更新为最短路径。
#include <iostream>
#include <fstream>
using namespace std;
int ord(char c)
{
if ((c>='a')&&(c<='z')) return (c-'a'+27);
if ((c>='A')&&(c<='Z')) return (c-'A'+1);
}
int main()
{
ifstream fin("comehome.in");
ofstream fout("comehome.out");
int p,map[53][53];
fin>>p;
for (int i=1;i<=52;i++)
for (int j=1;j<=52;j++)
map[i][j]=1000000000;
for (int i=1;i<=p;i++)
{
char c;
int x,y,d;
fin>>c;
x=ord(c);