【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

POJ 2831 Prim

原创 2016年08月30日 21:00:52

题意:给出一个n点m边的无向带权图,以及q个询问,每个询问查询当第i条边的权值改为x时,第i条边是否在该图的最小生成树(可能不唯一)之中。

思路:用Prim在n*n时间内求出最小生成树,并用Max[i][j]记录最小生成树上从i到j之间的边的权值最大值,每次询问只需判断两个节点之间边权最大值是否大于等于输入的x,若是则可以用这条修改过的边代替那条权值最大的边,输出Yes。注意可能有重边。

代码:

#include <cstdio>
#include <iostream>
#define For(i,j,k) for(int i = j;i <= (k);i ++)
using namespace std;

const int N = 1010, M = 100010, INF = 2e9;
int x[M], y[M], G[N][N], Max[N][N], dis[N], pre[N], vis[N], n, m, q;

void Prim(){
    For(i,2,n+1) dis[i] = INF;
    For(i,1,n){
        int k = n + 1;
        For(j,1,n)
            if(!vis[j] && dis[j] < dis[k])
                k = j;
        For(j,1,n)
            if(vis[j])
                Max[j][k] = Max[k][j] = max(Max[j][pre[k]], dis[k]);
        vis[k] = 1;
        For(j,1,n)
            if(!vis[j] && dis[j] > G[k][j])
                pre[j] = k, dis[j] = G[k][j];
    }
}

int main(){
    scanf("%d%d%d", &n, &m, &q);
    For(i,1,n)
        For(j,1,n) G[i][j] = INF;
    For(i,1,m){
        int w;
        scanf("%d%d%d", &x[i], &y[i], &w);
        G[x[i]][y[i]] = G[y[i]][x[i]] = min(G[x[i]][y[i]], w);
    }
    Prim();
    For(i,1,q){
        int k, t;
        scanf("%d%d", &k, &t);
        puts(Max[x[k]][y[k]] >= t ? "Yes" : "No");
    }
    return 0;
}
版权声明:本文为博主原创文章,转载需注明原文地址。 举报

相关文章推荐

【NOIP2015模拟10.22】最小代价

给出一幅由n个点m条边构成的无向带权图。 其中有些点是黑点,其他点是白点。 现在每个白点都要与他距离最近的黑点通过最短路连接(如果有很多个黑点,可以选取其中任意一个),我们想要使得花费的代价最小。请问...

【 CodeForces 209C】 【欧拉回路推结论+并查集计算联通分量】 【给定n点m边无向图,可能有自环和重边。 问最少添加多少条边后,使得图存在从点1出发发又回到点1的欧拉回路】

传送门:C. Trails and Glades 描述: C. Trails and Glades time limit per test 4 second...

基于邻接表的图建立(有向图+无向图)

图的表示(建立)有两种方法: ①邻接矩阵:A(i,j)=1表示i,j存在一条边,空间复杂度O(n^2),稠密图 ②邻接表:只记录存在的边,Vector+List的数据结构,稀疏图 邻接矩阵的图建立...

有向图的无权图最短路径算法与带权图的Dijkstra算法

最短路径算法是图论中的常见问题,在实际中有着较为广泛的应用,比如查找从一个地方到另一个地方的最快方式。问题可以概括为,对于某个输入顶点s,给出s到所有其它顶点的最短路径。水平有限,暂时先对这个问题的求...

一笔画问题(并查集+无向欧拉图)

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,...

【高斯消元】【图论】[Wc2011][HYSBZ/BZOJ2155]Xor

题目大意找1到n的路径中异或和最大的路径。分析首先,我们考虑这样一个问题:先看另一道题N个点M条边的边带权的无向图,求一个回路使XOR和最大(回路中的路径可以走多次)。另一道题的分析有这样一个结论(从...

zoj训练指南

链接: http://blog.csdn.net/wss0130/article/details/7880019 ...

poj 1258 Agri-Net-----最小生成树 prim

Agri-Net Time Limit:1000MS </td
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)