首页 > 其他分享 >Sparse Graph

Sparse Graph

时间:2024-02-03 15:44:30浏览次数:21  
标签:dist idx int Graph memset ne Sparse sizeof

#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
const int N = 200010, M = 2 * 20010, mod = 1e9 + 7;
using namespace std;
int h[N], e[M], ne[M], dist[N], idx = 0;
int n, m, s;
bool st[N], direct[N];
void add(int x, int y){
    e[idx] = y, ne[idx] = h[x], h[x] = idx ++;
}
void bfs(){
    queue<int> q;
    q.push(s);
    dist[s] = 0;
    st[s] = true;
    int cnt = 1;
    while(!q.empty() && cnt < n){
        memset(direct, 0, (n + 1) * sizeof(bool));
        int t = q.front();
        q.pop();
        for(int i = h[t]; ~i; i = ne[i]){
            int j = e[i];
            direct[j] = true;
        }
        for(int i = 1; i <= n; i ++){
            if(!st[i] && !direct[i]){
                q.push(i);
                cnt ++;
                dist[i] = dist[t] + 1;
                st[i] = true;
            }
        }
    }
}
int main()
{
    CLOSE;
    int T;
    cin >> T;
    while(T --){
        cin >> n >> m;
        idx = 0;
        //别sizeof多了,浪费时间
        memset(h, -1, (n + 1) * sizeof(int));
        memset(dist, 0x3f, (n + 1) * sizeof(int));
        memset(st, 0, (n + 1) * sizeof(bool));
        for(int i = 1; i <= m; i ++){
            int x, y;
            cin >> x >> y;
            add(x, y), add(y, x);
        }
        cin >> s;
        bfs();
        for(int i = 1; i <= n; i ++){
            if(i == s) continue;
            cout << (dist[i] == 0x3f3f3f3f ? -1 : dist[i])<< " ";
        }
        cout << endl;
        printf("\n");
    }
    return 0;
}

标签:dist,idx,int,Graph,memset,ne,Sparse,sizeof
From: https://www.cnblogs.com/acwhr/p/18004838

相关文章

  • R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
    原文链接:http://tecdat.cn/?p=23836原文出处:拓端数据部落公众号我们使用R中的igraph包,产生了网络的图形。但是很难将这些图表放到演讲和文章中,因为图表很难根据需要定制。使用igraph中的绘图功能可以得到你想要的结果,但用ggplot对工作更有帮助。所以本文探索了一种在ggplot中创......
  • R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
    原文链接:http://tecdat.cn/?p=23836原文出处:拓端数据部落公众号我们使用R中的igraph包,产生了网络的图形。但是很难将这些图表放到演讲和文章中,因为图表很难根据需要定制。使用igraph中的绘图功能可以得到你想要的结果,但用ggplot对工作更有帮助。所以本文探索了一种在ggplot中创......
  • SciTech-CG-Graphics-Chart-CodeGenerator-PyQtGraph: 基于PyQt的图形绘制以及应用库
    UMLclassdiagram:https://pyqtgraph.readthedocs.io/en/latest/api_reference/uml_overview.htmlFlowChart:https://pyqtgraph.readthedocs.io/en/latest/api_reference/flowchart/index.htmlTheStateMachineFramework¶:https://doc.qt.io/qtforpython-5/overviews/......
  • cd graph
    图论专场Fairy(CF19E)题目大意给出一张无向图,求删除一条边后此图变成二分图的所有删边种类\((n\leq10^4)\)。思路虽然看起来\(O(n^2)\)能过,但其实是过不了的,我们知道,判断二分图的一种方式是判断有无奇环,所以问题变成了删去一条边后图中有无奇环,如果有环重合,可以用类似异或......
  • 深入理解 Flink(六)Flink Job 提交和 Flink Graph 详解
    FlinkProgram编程套路回顾1、获取执行环境对象StreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();2、通过执行环境对象,注册数据源Source,得到数据抽象DataStreamds=env.socketTextStream(...)3、调用数据抽象的各种Transformation......
  • 《Confusion Graph: Detecting Confusion Communities in Large Scale Image Classifi
    论文标题《ConfusionGraph:DetectingConfusionCommunitiesinLargeScaleImageClassification》混淆图:在大规模图像分类中检测混淆社区作者RuochunJin、YongDou、YueqingWang和XinNiu来自国防科技大学并行和分布式处理国家实验室,和上一篇是姊妹篇。初读摘要......
  • OpenSceneGraph (OSG)
    OpenSceneGraph(OSG)是一个开源的三维引擎,广泛应用于多个领域,如可视化仿真、游戏、虚拟现实、科学计算、三维重建、地理信息、太空探索、石油矿产等。它由标准C++和OpenGL编写而成OpenGL(英语:OpenGraphicsLibrary,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形......
  • pprof_graphviz.bat
    @echooffSETLOCALEnableDelayedExpansionfor/d%%din(%USERPROFILE%\sdk\*)do(setsdk_dir=%%d)SETLOCALDisableDelayedExpansionrem下面这行可能需要根据机器修改一下set"go_dirs=%sdk_dir%\bin;%USERPROFILE%\go\bin"set"graphviz_dir=%~dp......
  • NebulaGraph is nothing without you | 社区 2023 年度人物合集
    在去年的年度人物回顾中,我们看到了形形色色的人们,他们当中有帮NebulaGraph捉bug的小能手,也有通过用回复来解答他人疑惑的启蒙者…在今年(2023年),我们这个整点不一样的,将镜头推进,看清他们的姓氏和脸庞,聚焦在每位NebulaGrpah技术社区作出贡献的小伙伴。每年的人物盘点,像是翻......
  • QGraphicsView缩放内容时保持鼠标位置不变
    有时在QGraphicsView显示一张图片时,我们需要缩放图像同时保持鼠标悬停位置内容的位置不变。这时候就需要我们在缩放时实时控制QGraphicsView的水平和垂直滚动条控件的位置。本文给出一个实现此功能的简单例子。此例子在VS2017和Qt5.9的环境下测试通过。软件效果如下:头文件:clas......