Sparse Graph HDU - 5876

「PAT乙级真题解析」Basic Level 1034 有理数四则运算 (问题分析+完整步骤+伪代码描述+提交通过代码) 题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。 如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式. **所以本题的一个重点是如何将有理数转为题设要求的有理数.** 阅读详情

In graph theory, the complementcomplement of a graph GG is a graph HH on the same vertices such that two distinct vertices of HH are adjacent if and only if they are notnot adjacent in GG.

Now you are given an undirected graph GG of NN nodes and MM bidirectional edges of unitunit length. Consider the complement of GG, i.e., HH. For a given vertex SS on HH, you are required to compute the shortest distances from SS to all N−1N−1 other vertices.
Input
There are multiple test cases. The first line of input is an integer T(1≤T<35)T(1≤T<35) denoting the number of test cases. For each test case, the first line contains two integers N(2≤N≤200000)N(2≤N≤200000) and M(0≤M≤20000)M(0≤M≤20000). The following MM lines each contains two distinct integers u,v(1≤u,v≤N)u,v(1≤u,v≤N) denoting an edge. And S (1≤S≤N)S (1≤S≤N) is given on the last line.
Output
For each of TT test cases, print a single line consisting of N−1N−1 space separated integers, denoting shortest distances of the remaining N−1N−1 vertices from SS (if a vertex cannot be reached from S, output “-1” (without quotes) instead) in ascending order of vertex number.
Sample Input
1
2 0
1
Sample Output
1

题意:题目很快就看懂了。。毛估估他大概规定每条边距离都是1吧=-=。。然后出发点s的距离是0,给你一张图,问你补图中s到各个点的距离是多少
思路:一开始想到的求补图。。太暴力了。。不可取不可取2333看了看别人的用两个set去维护,一个维护当前这步可以扩展到的,另一个维护还剩下哪些点,然后bfs到底就行了2333 用set还有点小刺激呢

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<vector>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<string>
#include<stack>
#include<map>
#include<set>
using namespace std;

//thanks to pyf ...

#define INF 0x3f3f3f3f
#define CLR(x,y) memset(x,y,sizeof(x))
#define mp(x,y) make_pair(x,y)
typedef pair<int, int> PII;
typedef long long ll;

const int N = 1e6 + 5;

struct Edge
{
    int u, v, next;
} edge[N * 2];
int head[N];
int dis[N];
int tot = 0;
void init()
{
    CLR(dis, 0);
    CLR(head, -1);
    CLR(edge, 0);
    tot = 0;
}
void add_edge(int u, int v)
{
    edge[tot].u = u;
    edge[tot].v = v;
    edge[tot].next = head[u];
    head[u] = tot ++ ;
}

bool bfs(int s, int n)
{
    set<int>ret, temp; //ret 这次还剩下的 temp 作为副本存放下次扩展的
    int cnt = 1;
    for (int i = 1; i <= n; i++)
        if (i != s)
            ret.insert(i);
    queue<int>q;
    dis[s] = 0;
    set<int>:: iterator it;
    q.push(s);
    while (!q.empty())
    {
        int u = q.front();
        q.pop();
        for (int i = head[u]; i != -1; i = edge[i].next)
        {
            int v = edge[i].v;
            if (!ret.count(v))
                continue;
            ret.erase(v);
            temp.insert(v);
        }
        for (it = ret.begin(); it != ret.end(); it++)
        {
            int v = *it;
            dis[v] = dis[u] + 1;
            cnt ++ ;
            q.push(v);
        }
        ret.swap(temp);
        temp.clear();
    }
    if (cnt == n)
        return true;
    else return false;
}
int main()
{
    int T;
    while (scanf("%d", &T) != EOF)
    {
        while (T--)
        {
            int n, m;
            scanf("%d%d", &n, &m);
            init();
            for (int i = 0; i < m; i++)
            {
                int u, v;
                scanf("%d%d", &u, &v);
                add_edge(u, v);
                add_edge(v, u);
            }
            int s;
            scanf("%d", &s);
            if (bfs(s, n))
            {
                int cnt = 0;
                for (int i = 1; i <= n; i++)
                {
                    if (i == s)
                        continue;
                    printf("%d", dis[i]);
                    cnt++;
                    if (cnt == n - 1)
                        printf("\n");
                    else
                        printf(" ");
                }
            }
            else
                printf("-1\n");
        }
    }
}
π0.5部署实战(一) ------ 在Thor上使用NVFP4量化 此篇文章是pi05模型在thor上部署系列文章的第一篇.主要介绍如何对pi05 2.6B LLM(Gemma)使用nvfp4进行量化.所有操作使用开源工具可以先参考进行环境的准备和安装,在上完成以下操作. 阅读详情

相关推荐

Multisim仿真电路:(十二)MOS管缓启动电路设计与优化

本文详细介绍了基于Multisim的MOS管缓启动电路设计与优化方法。通过分析米勒平台效应,探讨RC参数选择、多级设计和有源电路等技巧,有效抑制冲击电流并优化开关损耗。文章结合仿真实例,提供实用的设计策略和实际应用注意事项,帮助工程师提升电源管理系统的可靠性。

pytorch8learner的博客 237

Sparse Graph HDU - 5876(求补图最短路BFS)

Sparse Graph HDU - 5876 In graph theory, the complement of a graph G is a graph H on the same vertices such that two distinct vertices of H are adjacent if and only if they are not adjacent in G. No...

codeswarrior的博客 315

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

hdu5876 Sparse Graph(补图最短路)

题目链接 Sparse Graph Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 228    Accepted Submission(s): 81 Problem Description In g

fouzhe的博客 929

【语音识别算法】深度学习语音识别算法与传统语音识别算法的区别、对比及联系

深度学习语音识别算法与传统语音识别算法在理论基础、实现方式、性能表现等方面存在显著区别,同时也有一些联系。下面将从几个方面详细比较这两种方法,并给出应用实例和代码示例。

weixin_51306394的博客 2567

C++控制台实现简单的注册登录

C++控制台实现简单的注册登录 #include<iostream> #include<string> #include <vector> #include <conio.h> void Display();//调用display显示switch()界面 void Register();//注册 void Enter();//登录 using nam...

乔路非 2万+

HDU 5876 Sparse Graph [BFS]

http://acm.split.hdu.edu.cn/showproblem.php?pid=5876 ICPC 2016 大连 网络赛Description一个图 有N个点 M条边 一个开始点 S 现在,求它的补图 补图就是 如果这个图里两个点不相连,补图里就相连 如果这个图里两个点相连,补图就是不相连的 相连是直接相连 还没说完 补图里S到每个点的长度 没有权值,权值是

more time 295

视觉媒体通信作业记录(六)端到端的视频传输系统

将采集、编码、传输、显示各模块连接起来,形成一个端到端的视频通信系统,开发一个特色模块,将其加入系统;

weixin_45774698的博客 1967

hdu5876Sparse Graph

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意:给定一个无向图的m条边,求其补图以点s为起点的最短路。 分析:用一个队列维护用于更新的点和一个set维护哪些点还没有被更新,每次将于当前点直接相连的边丢进没有被更新的set中即可。 代码: #include #include #include #include #include #in

Fsss 588

PCL点云DBSCAN聚类算法:基于密度的点云聚类

核心点是在给定半径内拥有足够多邻居点的点,边界点是在给定半径内没有足够多邻居点但是位于核心点的邻域内的点,噪声点是既不是核心点也不是边界点的点。本文将介绍PCL中的DBSCAN(基于密度的空间聚类应用噪声)算法,用于点云数据的聚类。上述示例代码首先从PCD文件中读取点云数据,并设置了DBSCAN聚类的参数,包括邻域搜索半径(epsilon)和邻域内最小点数(min_points)。需要注意的是,示例代码中的点云数据格式为pcl::PointXYZ,如果使用其他类型的点云数据,需要相应地修改代码。

LpmShell的博客 1238

解决Todesk连接卡在100%问题:remote display server is not supported (e.g. Wayland)

摘要:解决Ubuntu 22.04远程桌面连接问题(AnyDesk报错"remote display server not supported"及向日葵/Todesk无法显示)。方法:1)安装lightdm显示管理器;2)启用lightdm并禁用gdm;3)编辑/etc/gdm3/custom.conf文件,添加WaylandEnable=false;4)重启系统。注:后续可通过命令切换回gdm显示管理器。该方法适用于解决Wayland显示协议导致的远程桌面连接兼容性问题。

猿小白的博客 1573

Hdu 5876 Sparse Graph(补图最短路)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5876 思路:用set维护未访问节点。BFS时,对于点u,枚举所有未访问点v,若u、v在原图中无边连接,则将v点入队·,更新最短距离,并且删除点v。 #include #include #include #include #include #include using namespace std;

哆啦AC梦的博客 969

YOLOv11改进 - 卷积Conv | SPD-Conv空间深度转换卷积优化空间信息编码,攻克小目标检测难题

本文介绍了一种名为SPD-Conv的新型CNN构建块及其在YOLOv11中的结合。传统CNN在处理低分辨率图像或小物体时,因使用步长卷积和池化层导致细粒度信息丢失、性能下降。SPD-Conv由空间到深度(SPD)层和非步长卷积(Conv)层组成,完全消除卷积步长和池化层,避免信息损失。SPD层重排特征图元素将空间信息转换到深度维度,非步长卷积层进一步处理特征图。我们将SPD-Conv集成进YOLOv11,实验证明其在低分辨率图像和小物体检测任务上显著优于现有模型。

魔改工程师的博客 1141

hdu5876 Sparse Graph(补图+最短路)

hdu5876题目给你一个图,一个起点,求这个图的补图的单源最短路。思路http://blog.youkuaiyun.com/timelimite/article/details/52498284 两个set就是为了实现“未扩展的点想用它但是和它相连了所以不能用”的情况。代码#include <algorithm> #include <iostream> #include <cstdlib> #include

天道酬勤 752

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU-5876 Sparse Graph

题目大意: 给你一个完全图让你删除给出的这些边形成新的图,问你在新的图上的s点到其它所有点的距离。 解题思路: BFS乱搞... 补图的BFS的问题虽然很经典= =不过确实还是第一次做。很方。 用一个map来保存邻接的信息。因为最多20000,很坑的是比赛时候题面给的是5000 然后先从s来遍历所有点,如果邻接信息里面含有s到i的边,那么将i插入到set里面,并将dis[i]置为-1,

Wilbert的博客 562

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

hdu5876 Sparse Graph(补图最短路 bfs)

题目链接:hdu5876 Sparse Graph 详见代码。。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 #include<vector> 6 #include<set...

dhe56357的博客 200

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU-5876-Sparse Graph(BFS)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意:求给定图的补图的单源最短路 题解:在原图上判断两点间可达性进行bfs,已经遍历过的点直接删掉 CODE: #include //#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #

不会吃鱼的喵 381

HDU 5876 Sparse Graph 补图BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876题意:求补图上起点到所有其它点的最短距离对每一个点,我们只用更新原图不邻接且没有访问过的点既可,复炸度O(m + n) 代码:#include <bits/stdc++.h> #define sf scanf #define pf printf using namespace std; const

SolarDomo的博客 326

Sparse Graph(HDU 5876)

大连网络赛的倒数第二题,比赛时想的太多了,没有A掉,挺可惜的!以下是题目 Sparse Graph Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1495    Accepted Submission(s): 525

keke_haha的博客 408

hdu-5876-Sparse Graph

hdu-5876-Sparse Graph

Seeker 1113

HDU 5876 Sparse Graph 补图的最短路径BFS *

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5876 思路:http://blog.youkuaiyun.com/TIMELIMITE/article/details/52498284?locationNum=3 解题思路:  维护一个集合open,在当前集合中表示可以拓展到点。 维护一个集合closed,在当前集合中表示不可以拓展到点。 bfs

BRCOCOLI的博客 519

HDU 5876 Sparse Graph

Problem Description In graph theory, the complement of a graph G is a graph H on the same vertices such that two distinct vertices of H are adjacent if and only if they are not adjacent i

Occult 439

hdu5876 Sparse Graph bfs + set

// hdu5876 Sparse Graph bfs + set // // 题目链接: // http://acm.split.hdu.edu.cn/showproblem.php?pid=5876 // // 题目大意: // 给定图G,求反图中固定起点s到其余各点到最短路 // // 解题思路: // 维护一个集合acc,在当前集合中表示可以拓展到点。

TIMELIMITE的专栏 1017

HDU - 5876 Sparse Graph(bfs+set)

题目链接:点击查看 题目大意:给定一个无向图G,规定H为G的补图,求在H上关于点s的单源最短路 题目分析:因为H是G的补图,所以可以用整个图减去G得到H,然后对H跑一边迪杰斯特拉,可是整个图最多能达到4e10,存都存不开,就别说别的了。正难则反,我们可以考虑用bfs正向去求,遍历到任意一个点时,我们可以枚举在G图中出现的边,并用总边删除(这里的总边指的是当前顶点和其余n-1个点的n-1条边),...

Falcon的博客 420
上一篇: Football Games HDU - 5873
下一篇: Friends and Enemies HDU - 5874
OneDay_pyf
博客等级 码龄10年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值