处理完输入就是很简单的一题 但是输入好难
勉强找到一种能看懂的。。。
#include#include #include #include using namespace std;#define MAX 999999999#define N 501int vis[N],map[N][N],dis[N];int n,m;int Dijkstra(int start,int end){ int i,j,min,loc; memset(vis,0,sizeof(vis)); for(i=1;i<=end;i++) dis[i]=map[start][i]; dis[start]=0; for(i=1;i<=end;i++) { min=MAX; for(j=1;j<=end;j++) { if(!vis[j]&&dis[j] ')?2520/d:MAX; d2=(ch=='*'||ch=='<')?2520/d:MAX; } else { x=j+(m+1)*(ver-1);//纵向的是[x][x+m+1] y=j+(m+1)*ver; d1=(ch=='*'||ch=='v')?2520/d:MAX; d2=(ch=='*'||ch=='^')?2520/d:MAX; } map[x][y]=d1; map[y][x]=d2; } if(i&1) hor++; //横向加 1 else ver++; } ans=Dijkstra(1,(n+1)*(m+1));//最后点数 if(MAX==ans) printf("Holiday\n"); else printf ("%d blips\n",ans); } return 0;}