zoukankan      html  css  js  c++  java
  • 洛谷 P1656 炸铁路

    题目描述

    因为某国被某红色政权残酷的高压暴力统治。美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵。

    该国有n个城市,这些城市以铁路相连。任意两个城市都可以通过铁路直接或者间接到达。

    uim发现有些铁路被毁坏之后,某两个城市无法互相通过铁路到达。这样的铁路就被称为key road。

    uim为了尽快使该国的物流系统瘫痪,希望炸毁铁路,以达到存在某两个城市无法互相通过铁路到达的效果。

    然而,只有一发炮弹(美国国会不给钱了)。所以,他能轰炸哪一条铁路呢?

    输入输出格式

    输入格式:

     

    第一行n,m(1<=n<=150, 1<=m<=5000),分别表示有n个城市,总共m条铁路。

    以下m行,每行两个整数a, b,表示城市a和城市b之间有铁路直接连接。

     

    输出格式:

     

    输出有若干行。

    每行包含两个数字a,b(a<b),表示<a,b>是key road。

    请注意:输出时,所有的数对<a,b>必须按照a从小到大排序输出;如果a相同,则根据b从小到大排序。

     

    输入输出样例

    输入样例#1: 复制
    6 6
    1 2
    2 3
    2 4
    3 5
    4 5
    5 6
    输出样例#1: 复制
    1 2
    5 6
    思路:并查集维护,暴力删边就可以了。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 5010
    using namespace std;
    int n,m;
    int fa[MAXN];
    struct nond{
        int a,b; 
    }edge[MAXN];
    int find(int x){
        if(fa[x]==x)    return x;
        else return fa[x]=find(fa[x]);
    }
    int cmp(nond x,nond y){
        if(x.a==y.a)    return x.b<y.b;
        return x.a<y.a;
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++){
            scanf("%d%d",&edge[i].a,&edge[i].b);
            if(edge[i].a>edge[i].b)    swap(edge[i].a,edge[i].b);
        }
        sort(edge+1,edge+1+m,cmp);
        for(int i=1;i<=m;i++){
            int tot=0;
            for(int j=1;j<=n;j++)    fa[j]=j;
            for(int j=1;j<=m;j++){
                if(i==j)    continue;
                int dx=find(edge[j].a);
                int dy=find(edge[j].b);
                if(dx==dy)    continue;
                fa[dx]=dy;tot++;
                if(tot==n-1)    break;
            }
            if(tot<n-1)    cout<<edge[i].a<<" "<<edge[i].b<<endl;
        }
    } 
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    Python 生成器
    Python 切片
    Visual Studio Code编辑器使用
    linux常用命令
    python selenium学习笔记
    selenium+chrome driver 报错处理 (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17763 x86_64)
    python+uiautomator2+fiddler 自动化测试学习总结
    我的第一篇博客
    计算机网络差错控制基本方法
    计算机网络复习笔记(简略)
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/8413160.html
Copyright © 2011-2022 走看看