zoukankan      html  css  js  c++  java
  • hdu2647(拓扑排序)

    链接:点击打开链接

    题意:每一个人的基本工资为888,给出两个人的关系a,b,代表a的工资比b高问满足全部条件的话,最少须要支付多少钱

    代码:

    #include <map>
    #include <queue>
    #include <stack>
    #include <string>
    #include <vector>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    int n,m;
    vector<int> G[10005];
    int d[10005],deg[10005];
    int topo(){
        int i,j,u,v,op;
        queue<int> qu;
        for(i=1;i<=n;i++)
        if(deg[i]==0)
        qu.push(i);
        op=0;
        while(qu.size()){
            u=qu.front();
            qu.pop();
            op++;
            for(i=0;i<G[u].size();i++){
                v=G[u][i];
                deg[v]--;
                d[v]=max(d[v],d[u]+1);              //相当于求关键路劲
                if(deg[v]==0)
                qu.push(v);
            }
        }
        if(op!=n)
        return 0;
        return 1;
    }
    int main(){
        int i,j,u,v,ans;
        while(scanf("%d%d",&n,&m)!=EOF){
            for(i=1;i<=n;i++){
                G[i].clear();
                d[i]=deg[i]=0;
            }
            for(i=1;i<=m;i++){                      //反向建图拓扑更新一下
                scanf("%d%d",&u,&v);
                G[v].push_back(u);
                deg[u]++;
            }
            if(topo()==0)
            puts("-1");
            else{
                ans=0;
                for(i=1;i<=n;i++)
                ans+=d[i];
                printf("%d
    ",ans+888*n);
            }
        }
        return 0;
    }
    

  • 相关阅读:
    mac-常用命令
    react-redux-数据流
    ##通讯录阶段重要代码
    ##DAY15——UICollectionView
    ##DAY14——StoryBoard
    通讯录——单例
    通讯录——选择图片
    ##DAY13——可视化编程之XIB
    ##DAY12 UITableViewCell自定义
    ##DAY10 UITableView基础
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7270790.html
Copyright © 2011-2022 走看看