zoukankan      html  css  js  c++  java
  • PAT: 1003 Emergency

    查看题目:1003 Emergency

    声明:程序源码并非完美,提交后结果为“部分正确”。因博主看到这个题目网上的答案较少,所以将未完善的代码发出来供大家参考!

    本程序采用深度优先搜索算法(DFS),由于递归的调用方式,占用内存过大导致程序提交错误。

    #include "pch.h"
    #include <iostream>
    using namespace std;
    
    const int MAXV = 50;
    const int INF = 99999;
    
    struct Graph {
        int Vex[MAXV];
        int arcs[MAXV][MAXV];
        int vexnum, arcsnum;
    }G;
    
    bool visited[MAXV];
    int path[MAXV];
    int length = 0;
    int min_length = INF;
    int num = 0;
    int team = 0;
    int maxteam = 0;
    
    void DFS(Graph G, int c1, int c2) {
        team += G.Vex[c1];
        if (c1 == c2) {//走到终点了
            //length += G.arcs[c1][c2];
            if (length < min_length) {
                num = 1;
                min_length = length;
                maxteam = team;
            }
            else if (length == min_length) {
                num++;
                if (team > maxteam)maxteam = team;
            }
            return;
        }
        visited[c1] = true;
        
        for (int i = 0; i < G.vexnum; i++) {
            if (G.arcs[c1][i] != INF && visited[i] == false) {//访问v的邻接点
                length += G.arcs[c1][i];
                //team += G.Vex[i];
                DFS(G,i,c2);
                length -= G.arcs[c1][i];
                //team -= G.Vex[i];
            }
        }
        team -= G.Vex[c1];
        return;
    }
    
    int main() {
        for (int i = 0; i < MAXV; i++) {
            for (int j = 0; j < MAXV; j++) {
                G.arcs[i][j] = INF;
            }
        }
        int c1, c2;
        cin >> G.vexnum >> G.arcsnum >> c1 >> c2;
        
        for (int i = 0; i < G.vexnum; i++) {//城市救援队数量
            cin >> G.Vex[i];
        }
        int temp1, temp2, temp3;
        for (int i = 0; i < G.arcsnum; i++) {
            cin >> temp1 >> temp2 >> temp3;
            G.arcs[temp1][temp2] = temp3;
        }
        DFS(G, c1, c2);
        cout << num <<' '<< maxteam << endl;
    }
  • 相关阅读:
    Linux_LEMP
    Linux_LEMP
    Linux_指令杂烩
    Linux_指令杂烩
    Linux_SELinux使用
    AWS S3存储基于Hadoop之上的一致性保证
    Ozone数据写入过程分析
    Ozone Datanode的分布式元数据管理
    聊聊Ozone的Topology Awareness
    Ozone数据探查服务Recon的启用
  • 原文地址:https://www.cnblogs.com/qujunhui/p/10884382.html
Copyright © 2011-2022 走看看