zoukankan      html  css  js  c++  java
  • 洛谷 P1807 最长路_NOI导刊2010提高(07)

    最长路

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <vector>
    using namespace std;
    //Mystery_Sky
    //
    #define maxn 1000010
    #define maxm 5000050
    #define INF 0x3f3f3f3f
    queue <int> q;
    int ind[maxn], dis[maxn];
    struct Edge{
    	int to, next, w;
    }edge[maxn];
    int head[maxn], cnt, ans;
    int n, m;
    inline void add_edge(int u, int v, int w)
    {
    	edge[++cnt].to = v;
    	edge[cnt].w = w;
    	edge[cnt].next = head[u];
    	head[u] = cnt;
    }
    inline void topo()
    {
    	for(int i = 1; i <= n; i++) {
    		if(!ind[i]) {
    			q.push(i); 
    		}
    	}
    	dis[1] = INF;
    	while(!q.empty()) {
    		int u = q.front();
    		q.pop();
    		for(int i = head[u]; i ; i = edge[i].next) {
    			int v = edge[i].to;
    //			printf("%d %d %d
    ", u, v, edge[i].w);
    			ind[v]--;
    			dis[v] = max(dis[v], dis[u] + edge[i].w);
    			if(!ind[v]) q.push(v); 
    		} 
    	}
    	
    }
    
    int u, v, w;
    int main() {
    	scanf("%d%d", &n, &m);
    	for(int i = 1; i <= m; i++) {
    		scanf("%d%d%d", &u, &v, &w);
    		add_edge(u, v, w);
    		ind[v]++;
    	}
    	topo();
    	if(dis[n]) printf("%d
    ", dis[n]-INF);
    	else printf("-1
    ");
    	return 0;
    }
    
    唯愿,青春不辜负梦想,未来星辰闪耀
  • 相关阅读:
    docker搭建主从复制mysql
    mysql主从复制(mariadb)
    docker搭建mysql8.0
    docker安装mysql
    终端配置kxsw
    AJAX教程
    移动端常见布局
    css为什么需要精灵图
    元素的显示与隐藏
    css网页布局总结
  • 原文地址:https://www.cnblogs.com/Benjamin-cpp/p/10539423.html
Copyright © 2011-2022 走看看