zoukankan      html  css  js  c++  java
  • PAT1003

    #include<iostream>
    #include<cstring>
    #include<climits>
    using namespace std;
    
    int n, m, c1, c2;
    //dis[i]从起点到i的最短路径,num[i]为长度,weight[i]为i城的救援小组人数,w[i]为到i城已经接到的救援人数,e[][]路径权重
    int dis[500], num[500], weight[500], w[500], e[500][500]; bool visit[500] = {false}; const int MAX = 99999999; int main() { while(cin>>n>>m>>c1>>c2) { //input for(int i = 0; i < n; i++) cin>>weight[i]; int _s, _e, _w; fill(e[0], e[0] + 500 * 500, MAX); fill(dis, dis + 500, MAX); for(int i = 0; i < m; i++) { cin>>_s>>_e>>_w; e[_s][_e] = e[_e][_s] = _w; } dis[c1] = 0; num[c1] = 1; w[c1] = weight[c1];     
        
         //循环dis[0] ----> dis[max]
    for(int i = 0; i < n; i++) { int _min = MAX, u = -1; for(int j = 0; j < n; j++) { if(!visit[j] && dis[j] < _min) { u = j; _min = dis[j]; } } if(u == -1) break; visit[u] = true; for(int v = 0; v < n; v++) { if(!visit[v]&& e[u][v] != MAX) {
                //最短路径长度
    if(dis[u] + e[u][v] < dis[v]) { dis[v] = dis[u] + e[u][v]; num[v] = num[u]; w[v] = w[u] + weight[v]; } else if(dis[u] + e[u][v] == dis[v]) { num[v] = num[v] + num[u]; if(w[u] + weight[v] > w[v]) w[v] = w[u] + weight[v]; } } } } cout<<num[c2]<<" "<<w[c2]<<endl; } return -1; }
  • 相关阅读:
    003 python接口 cookies
    RocketDock 安装
    001 python接口 get请求
    mysql创建远程登陆用户并授权
    php时间函数
    ThinkPHP5高阶实战教程
    unset与unlink
    include 和require的区别
    80端口被system 占用
    【纪中受难记】——C2Day4:水题大赏
  • 原文地址:https://www.cnblogs.com/CGJobs/p/11304054.html
Copyright © 2011-2022 走看看