zoukankan      html  css  js  c++  java
  • 第七届 山东ACM热身赛 Dwarf Tower



    #include <iostream>
    #include <vector>
    #include <cstring>
    #include <stdio.h>
    using namespace std;
    
    struct Com{
      int  x,y;
      Com(int _x,int _y){
        x=_x;
        y=_y;
      }
    };
    vector <Com> vec[10005];
    int value[10005];
    int minvalue[10005];
    
    int dfs(int x){
     //cout<<"========"<<x<<' '<<minvalue[x]<<endl;
     if(minvalue[x]!=-1)
        return minvalue[x];
     minvalue[x] = value[x];
     for(int i=0 ; i<vec[x].size();i++){
        int tmpx,tmpy;
        if(minvalue[ vec[x][i].x ]!=-1 )
            tmpx=minvalue[ vec[x][i].x ];
        else
            minvalue[ vec[x][i].x ] = dfs(vec[x][i].x) , tmpx = minvalue[ vec[x][i].x ];
        if(minvalue[ vec[x][i].y ]!=-1 )
            tmpy=minvalue[ vec[x][i].y ];
        else
            minvalue[ vec[x][i].y ] = dfs(vec[x][i].y) , tmpy = minvalue[ vec[x][i].y ];
        minvalue[x] = min(minvalue[x] , tmpx+tmpy);
     }
     //cout<<x<<":"<<minvalue[x]<<endl;
     return minvalue[x];
    }
    
    
    int main()
    {
        int m,n;
        int tmp,x,y;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d",&value[i]);
        for(int i=0;i<m;i++){
            scanf("%d%d%d",&tmp,&x,&y);
            vec[tmp].push_back(Com(x,y));
        }
       //cout<<vec[1][0].x<<' '<<vec[1][0].y<<' '<<endl;
       // cout<<vec[4][0].x<<' '<<vec[4][0].y<<' '<<endl;
       // cout<<vec[5][0].x<<' '<<vec[5][0].y<<' '<<endl;
        memset(minvalue,-1,sizeof(minvalue));
        printf("%d",dfs(1));
        return 0;
    }
    





  • 相关阅读:
    7.Layout布局(tabs、accordion、layout)
    6.form表单四种提交方式
    5.form表单验证
    4.easyloader.js文件的作用
    3.window窗口
    2.panel面板
    1.messager消息提示框
    2017-10-5-Python
    2017-9-24-Linux移植:ubuntu server 16.04无法联网&无法apt-get update解决
    2017-9-17-EDFA
  • 原文地址:https://www.cnblogs.com/zswbky/p/6717913.html
Copyright © 2011-2022 走看看