zoukankan      html  css  js  c++  java
  • PAT (Advanced Level) Practice 1003 Emergency

    思路:用深搜遍历出所有可达路径,每找到一条新路径时,对最大救援人数和最短路径数进行更新。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 const int N=600;
     6 int tu[N][N],city[N],vis[N];//tu存道路,city存各城市救援人数,vis为标记数组
     7 int n,m,start,dis,path=0,shortest=1e8,allpeople=0;//path为最短路径数,allpeople为最大救援人数
     8 void read()
     9 {
    10     memset(vis,0,sizeof(vis));
    11     fill(tu[0],tu[0]+N*N,0);
    12     cin>>n>>m>>start>>dis;
    13     for (int i=0;i<n;i++)
    14         cin>>city[i];
    15     int a,b,c;
    16     for (int i=0;i<m;i++)
    17     {
    18         cin>>a>>b>>c;
    19         tu[a][b]+=c;//注意题目,是无向图!!
    20         tu[b][a]+=c;
    21     }
    22 }
    23 void dfs(int step,int now,int people)
    24 {
    25     people+=city[now];//要先加上该城市救援人数!
    26     if (now==dis)
    27     {
    28         if (step<shortest)
    29         {
    30             shortest=step;
    31             allpeople=people;
    32             path=1;
    33         }
    34         else if (step==shortest)//这里要用else if不能用if!!如果用if会在第一次更新时满足这两个if判断,导致path多加了一次!!
    35         {
    36             path++;
    37             allpeople=max(allpeople,people);
    38         }
    39         return;
    40     }
    41     vis[now]=1;
    42     for (int i=0;i<n;i++)
    43     {
    44         if (tu[now][i]>0&&vis[i]==0)
    45         {
    46             step+=tu[now][i];
    47             dfs(step,i,people);
    48             step-=tu[now][i];
    49         }
    50     }
    51     vis[now]=0;
    52 }
    53 int main()
    54 {
    55 //    freopen("in.txt","r",stdin);
    56     read();//输入函数
    57     dfs(0,start,0);//深搜遍历所有路径
    58     cout<<path<<" "<<allpeople<<endl;
    59 
    60     return 0;
    61 }
  • 相关阅读:
    elipse图标注解
    Thrift源码解析--transport
    IDL和生成代码分析
    thrift概述
    less分页阅读
    this与super使用总结(java)
    more分页阅读
    Arrays
    Teigha克隆db的blockTableRecord里面的一个实体
    Teigha的BlockTableRecord获取方法
  • 原文地址:https://www.cnblogs.com/hemeiwolong/p/10640197.html
Copyright © 2011-2022 走看看