Tyvj(无向图的桥)

摘要:
题目链接分析:无向图的桥tip这么裸的题我为什么没有一A呢因为我又把n和m搞混啦!!!

题目链接

分析:
无向图的桥

tip

这么裸的题我为什么没有一A呢
因为我又把n和m搞混啦!!!

这里写代码片
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

const int N=210;
int n,m;
struct node{
    int x,y,nxt;
    bool p;
};
node way[1010];
int pre[N],back[N],tt=0,tot=0,st[N],an=0;
struct po{
    int x,y;
};
po ans[1010];

void add(int u,int w)
{
    tot++;
    way[tot].x=u;way[tot].y=w;way[tot].nxt=st[u];st[u]=tot;
}

int cmp(const po &a,const po &b)
{
    if (a.x!=b.x) return a.x<b.x;
    else return a.y<b.y;
}

int dfs(int now,int fa)
{
    int ch=0;
    int low=pre[now]=++tt;
    for (int i=st[now];i;i=way[i].nxt)
    {
        int v=way[i].y;
        if (!pre[v])
        {
            int lowv=dfs(v,now);
            low=min(low,lowv);
            ch++;
            if (lowv>pre[now])  //存在即合理 
            {
                an++;
                ans[an].x=min(now,v);
                ans[an].y=max(now,v); 
            }  
        }
        else if (pre[v]<pre[now]&&v!=fa)
        {
            low=min(low,pre[v]);
        }
    }
    back[now]=low;
    return low;
}

int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++)
    {
        int u,w;
        scanf("%d%d",&u,&w);
        add(u,w);
        add(w,u);
    }
    dfs(1,-1);
    sort(ans+1,ans+1+an,cmp);
    int xx=-1;
    int yy=-1;
    for (int i=1;i<=an;i++)
        if (xx!=ans[i].x|yy!=ans[i].y)
        {
            printf("%d %d
",ans[i].x,ans[i].y);
            xx=ans[i].x;
            yy=ans[i].y;
        }
    return 0;
}

免责声明:文章转载自《Tyvj(无向图的桥)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《JavaScript 高级程序设计》总结Tyvj-超级书架下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Practical Shader Development: Vertex and Fragment Shaders for Game Developers (Kyle Hallady 著)

这是我们描述形状的方法之一,它将使计算机变得有意义。要定义形状,我们需要存储关于三件事的信息:顶点、边和面。顶点是三维空间中的点。边是连接顶点的最内层。面是由三个或多个角度形成的二维形状。你不能把脸想象成只有在记忆中恢复的一个网格的垂直面之间的空间,而每一个共享的需要和脸都是由垂直面顺序简单定义的。因为很多名字都不会出现在网格的“背面”,所以正面的哪一面很重...

PLSQL常用配置之窗口/版面保存、SQL格式化/美化、SQL注释去掉注释等快捷键配置、登陆历史修改配置

//Blog.csdn.net/eyeidolon/article/details/8251791 PLSQL常用配置的快捷键配置,如窗口/布局保存、SQL格式化/美化和SQL注释删除,以及登录历史修改1的配置。PL/SQLDeveloper记住登录密码当使用PL/SQLDeveloper时,默认情况下PL/SQLDeveloper会执行此窗口中的所有SQL...

Wayland 源码解析之代码结构

Wayland实现的代码组成可以分为以下四个部分:1.Wayland库的核心部分,大部分Wayland协议实现都位于该库中。1) 该工具程序分析Wayland协议文件并生成相应的头文件和代码文件。源代码文件列表:wayland/cursor/wayland cursor。通道/光标/通道光标。cwyland/cursor/os兼容性。cwyland/curs...

shell脚本之数组

declare-AARRAY_NAME:声明关联数组。数组中元素的赋值方式:一次只赋值一个元素;ARRAY_NAME[INDEX]=value一次赋值全部元素;ARRAY_NAME=注意:元素与元素之间使用空格字符隔开只赋值特定元素;这种称之为稀疏格式的数组。/bin/bash#declare-aranddeclare-imax=0foriin{1..10}...

使用事务和SqlBulkCopy批量插入数据

类似与MicrosoftSQLServer包中名为bcp的命令行应用程序。但是使用SqlBulkCopy类可以编写托管代码解决方案,性能上优于bcp命令行应用程序,更优于如Insert方式向SQLServer表加载大量数据。SqlBulkCopy可以应用到大批量数据的转移上,而不管数据源是什么。之前在做winform开发的时候,发现当datagridview...

PbootCMS后台增加轮播图自定义分组名称

我们知道,在PbootCMS后台的旋转木马图形模块中,当添加新的旋转木马图时,您不能自己选择组。相反,您可以自动创建组,例如组1、组2和组3。这显然对客户的体验不友好,而且您无法直观地知道在网页的哪个位置使用了旋转木马图。让我们分享一下如何启用PbootCMS后台来添加、删除和修改旋转木马图形组。...