浙大PAT advanced level 1003 emergency

dij的简化版,比较简单。

 
  

#include using namespace std;

int n,m,s,e; int team[502]; int mat[502][502]; int maxteam[502]; int pathcount[502]; int dist[502]; int used[502]; int INF = 1<<30;

void dij(){  dist[s] = 0;  pathcount[s] = 1;  maxteam[s] = team[s];  int i,k;  for(k=0;kdistcost){//如果更短则替换      dist[i] = distcost;      pathcount[i] = pathcount[p];//存储的是路径条数 不是之前的节点 初始值为0      maxteam[i] = maxteam[p]+team[i];//初始值为0 记录该最短路径的队伍数量     }else if(dist[i]==distcost){//两者相等的情况      pathcount[i] += pathcount[p];//增加路径数目      if(maxteam[p]+team[i]>maxteam[i])//比较两者的队伍数量 选大的       maxteam[i] = maxteam[p]+team[i];     }    }   }        } }

int main(void){  int i,j,k;  int a,b,l;  while(scanf("%d %d %d %d",&n,&m,&s,&e)!=EOF){//输入   for(i=0;i


你可能感兴趣的:(浙大PAT advanced level 1003 emergency)