zoukankan      html  css  js  c++  java
  • DAG最短路算法

    #include <cstdio>
    #include <iostream>
    #include <queue>
    #include <vector>
    #include <stack>
    using namespace std;
    #define INF 1000000
    int d[100];  
    queue<int> que; 
    vector<int> vec[1000];
    vector<int> w[1000];
    int n,m;
    int F[1000];
    
    int topu_rudu(){  
        stack<int> st;  
        for(int i = 0;i < n;i++){  
            d[i] = vec[i].size();  
            if(d[i] == 0){  
                st.push(i);  
            }  
        }  
        while(!st.empty()){  
            int u = st.top();  
            st.pop();  
            que.push(u);      
            int si = vec[u].size();  
            for(int i = 0;i < si;i++){  
                int v = vec[u][i];  
                d[v]--;  
                if(d[v] == 0){  
                    st.push(v);  
                }  
            }  
        }  
    }
    
    int DAG_SHORTEST_PATHS(){
    	topu_rudu();
    	for(int i = 0;i < n;i++){
    		d[i] = INF;
    		F[i] = -1; 
    	}
    	while(!que.empty()){
    		int u = que.front();
    		que.pop();
    		int si = vec[u].size();
    		for(int i = 0;i < si;i++){
    			int v = vec[u][i];
    			if(d[v] > d[u] + w[u][i]){
    				d[v] = d[u] + w[u][i];
    				F[v] = u;
    			}
    		}
    	}
    }
    int main(){
    	while(cin >> n >> m){
    		for(int i = 0;i < m;i++){
    			int x,y,v;
    			
    			cin >> x >> y>> v;
    			w[x].push_back(y);
    			vec[x].push_back(v);
    		}
    		DAG_SHORTEST_PATHS();
    	} 
    	return 0;
    }

  • 相关阅读:
    文件
    模块
    异常
    抽象
    条件,循环
    centos6.4 64位下安装nfs文件共享系统
    YUM安装删除软件
    apache常用的两种工作模式 prefork和worker
    shell不打印
    APACHE安装配置说明
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5344116.html
Copyright © 2011-2022 走看看