PAT 1003 Emergency (25)

来源:互联网 发布:fpga开发板与单片机 编辑:程序博客网 时间:2024/05/16 07:37

写了一段时间的HDU上的搜索,现在回来写这道PAT上的,顿时觉得PAT上的难度确实是要小一些的,但是这里暴露了自己的问题,以前都不怎么用宏定义,在这里心血来潮用了一次,一直报错但是一直没找到问题,这里要提醒自己,宏定义常量的时候后面不要加;


#include<stdio.h>#include<string.h>#define MAX1 999int start,ends,n,m,visit[505],map[505][505],len[505],s,e,d,count,maxLen,maxDis;void dfs(int st,int dis,int sLen){if(st == ends){if(dis < maxLen){count = 1;maxLen = dis;maxDis = sLen;}else if(dis == maxLen){count++;if(maxDis < sLen)maxDis = sLen;}return ;}if(dis > maxLen) return ;for(int i = 0;i<n;i++){          if(visit[i] == 0 && map[st][i] != MAX1){              visit[i] = 1;              dfs(i,dis+map[st][i],sLen+len[i]);              visit[i] = 0;          }      }  }int main(){count = 0;maxLen = MAX1;scanf("%d %d %d %d",&n,&m,&start,&ends);memset(visit,0,sizeof(visit));for(int i = 0;i<n;i++)scanf("%d",&len[i]);for(int i = 0;i<n;i++)for(int j = 0;j<n;j++)map[i][j] = MAX1;while(m--){scanf("%d %d %d",&s,&e,&d);map[s][e] = map[e][s] = d;}dfs(start,0,len[start]);return 0;}


0 0