uva 610(tarjan的应用)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23727

思路:首先是Tarjan找桥,对于桥,只能是双向边,而对于同一个连通分量而言,只要重新定向为同一个方向即可。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stack>
 6 #include<queue>
 7 #include<vector>
 8 using namespace std;
 9 #define MAXN 1111
10 typedef pair<int,int>PP;
11 
12 int low[MAXN],dfn[MAXN];
13 bool mark[MAXN];
14 int _count,cnt;
15 vector<int>g[MAXN];
16 vector<PP>bridge;
17 bool vis[MAXN][MAXN];
18 int n,m;
19 
20 void Tarjan(int u,int father)
21 {
22     int flag=0;
23     low[u]=dfn[u]=++cnt;
24     mark[u]=true;
25     for(int i=0;i<(int)g[u].size();i++){
26         int v=g[u][i];
27         if(v==father&&!flag){ flag=1;continue; }
28         if(dfn[v]==0){
29             Tarjan(v,u);
30             low[u]=min(low[u],low[v]);
31             if(low[v]>dfn[u]){
32                 bridge.push_back(make_pair(u,v));
33                 bridge.push_back(make_pair(v,u));
34                 vis[u][v]=vis[v][u]=true;
35             }else {
36                 bridge.push_back(make_pair(u,v));
37                 vis[u][v]=vis[v][u]=true;
38             }    
39         }else if(mark[v]){
40             low[u]=min(low[u],dfn[v]);
41             if(!vis[u][v]){
42                 bridge.push_back(make_pair(u,v));
43                 vis[u][v]=vis[v][u]=true;
44             }
45         }
46     }
47 }
48 
49 int main()
50 {
51     int u,v,t=1;
52     while(~scanf("%d%d",&n,&m)){
53         if(n==0&&m==0)break;
54         for(int i=0;i<=n+1;i++)g[i].clear();
55         bridge.clear();
56         while(m--){
57             scanf("%d%d",&u,&v);
58             g[u].push_back(v);
59             g[v].push_back(u);
60         }
61         memset(mark,false,sizeof(mark));
62         memset(dfn,0,sizeof(dfn));
63         memset(vis,false,sizeof(vis));
64         _count=cnt=0;
65         Tarjan(1,-1);
66         printf("%d\n\n",t++);
67         for(int i=0;i<(int)bridge.size();i++){
68             printf("%d %d\n",bridge[i].first,bridge[i].second);
69         }
70         puts("#");
71     }
72     return 0;
73 }
74 
75 
76 
77 
78 
79 
80 
81 
82 
83         
View Code

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win7搭建NodeJs开发环境以及HelloWorld展示—图解

Windows 7系统下搭建NodeJs开发环境&#xff08;NodeJsWebStrom&#xff09;以及Hello World&#xff01;展示&#xff0c;大体思路如下&#xff1a;第一步&#xff1a;安装NodeJs运行环境。第二步&#xff1a;安装WebStrom开发工具。第三步&#xff1a;创建并运行NodeJs项目展…

IDEA中Spring Boot项目报错:There was an unexpected error (type=Not Found, status=404)

报这个错的原因是SpringBoot主配置类(SpringBootApplication注解标注的类)的所在包和你的Controller类不在同一个包下

计算机一级windows7操作,计算机等级一级:Windows7应用之小技巧

为了帮助广大考生更好的复习&#xff0c;帮考网综合整理提供了计算机等级考试一级微机知识:Windows7应用之小技巧&#xff0c;以供各位考生复习参考&#xff0c;希望对考生复习有所帮助。从年初开始&#xff0c;断断续续的&#xff0c;windows7使用也有一段时间&#xff0c;碰到…

漂亮的jQuery tab选项卡插件

清远大学城网&#xff08;http://www.qydxc.com&#xff09; tab选项卡在实际应用中几乎到处可见&#xff0c;像现在大型网站163&#xff0c;QQ&#xff0c;新浪&#xff0c;淘宝都使用了tab选项卡效果&#xff0c;下面我来介绍一款jQuery tab选项卡插件. jQuery tab插件 结构…

清空文件下的SVN控制文件

代码如下&#xff0c;复制代码为txt文件&#xff0c;更改后缀为“.bat”&#xff0c;把文件放到&#xff0c;需要删除的文件的顶端文件夹内&#xff0c;点击执行。 echo on color 2f mode con: cols80 lines25 REM echo 正在清理SVN文件&#xff0c;请稍候...... rem 循环删除当…

我国高性能计算机发展,中国高性能计算机发展水平与趋势

“目前&#xff0c;我国的高性能计算已达到世界先进水平&#xff0c;成为继美、日之后&#xff0c;被誉为世界高性能计算的‘第三股力量’。但是&#xff0c;从发展总体上&#xff0c;我们也清醒的看到&#xff0c;我国高性能计算在更广泛的应用领域上与西方国家存在很大差距。…

pandas无法打开.xlsx文件,xlrd.biffh.XLRDError: Excel xlsx file; not supported

pandas无法打开.xlsx文件&#xff0c;xlrd.biffh.XLRDError: Excel xlsx file&#xff1b; not supported 新版xlrd报 Excel xlsx file&#xff1b; not supported 原因是最近xlrd更新到了2.0.1版本&#xff0c;只支持.xls文件。所以pandas.read_excel(‘xxx.xlsx’)会报错。…

MySQL5.6忘记root密码(win平台)

1、首先net stop mysql服务&#xff0c;并且切换到任务管理器&#xff0c;有与mysql有关的&#xff0c;最好关闭进程。 2、运行CMD命令切换到MySql安装bin目录&#xff0c;下面是我的mysql安装目录 cd C:\Program Files\MySQL\MySQL Server 5.6\bin 接着执行mysqld --skip-gra…

JS计算本周一和本周五的日期

代码不长&#xff1a; var todaynew Date();var weekdaytoday.getDay(); var mondaynew Date(1000*60*60*24*(1-weekday) today.getTime()); var fridaynew Date(1000*60*60*24*(5-weekday) today.getTime()); 目前monday和friday都是Date类型的&#xff0c;要得到字符…

单片机四位数加减计算机程序,51单片机简易计算器程序 实现数字的加减乘除运算...

//头文件#define uint unsigned int#define uchar unsigned charsbit lcdenP1^1; //LCD1602控制引脚sbit rsP1^0;sbit rwP1^2;sbit busyP0^7;//LCD忙char i,j,temp,num,num_1;long a,b,c; //a,第一个数 b,第二个数 c,得数float a_c,b_c;uchar flag,fuhao;//flag表示是否有运…

Python函数定义变量报错:local variable ‘a‘ referenced before assignment

Python 全局变量与global关键字 ​ 在Python的变量使用中&#xff0c;经常会遇到这样的错误: local variable a referenced before assignment它的意思是&#xff1a;局部变量“a”在赋值前就被引用了。 ​ 比如运行下面的代码就会出现这样的问题&#xff1a; a 3 def Fuc(…

MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

MySQL数据库工具类之——DataTable批量加入数据库(Net版)&#xff0c;MySqlDbHelper通用类希望能对大家有用&#xff0c;代码如下&#xff1a; using MySql.Data.MySqlClient;using System;using System.Collections.Generic;using System.Configuration;using System.Data;usi…

显示播客信息-bloginfo() 函数

该标签显示用户博客的相关信息&#xff0c;这些信息通常来自用户在WordPress网站后台“我的配置”和“设置>常规”菜单中填写的内容。该标签可以用在页面模板的任何区域内&#xff0c;且该标签总是将结果输出给浏览器。如果用户需要将输出内容用在PHP中&#xff0c;请使用ge…

计算机的访问资料,怎么从一台电脑访问另一台电脑上的资料?

如果两台电脑用路由器上网&#xff0c;可以按下面方法设置&#xff0c;如果没有可以用网线和网卡连接。用一根网线让两台电脑共享文件网卡连接&#xff0c;首先准备好两张10/100m的网卡。然后&#xff0c;准备几米长的网线&#xff0c;具体长度由你决定。按特定的方式接好插头。…

在pandas中遍历DataFrame行

有如下 Pandas DataFrame&#xff1a; import pandas as pd inp [{c1:10, c2:100}, {c1:11,c2:110}, {c1:12,c2:120}] df pd.DataFrame(inp) print df 上面代码输出&#xff1a; c1 c2 0 10 100 1 11 110 2 12 120 现在需要遍历上面DataFrame的行。对于每一行&#x…

pomelo获取客户端IP

代码&#xff1a; Handler.prototype.getClientIp function(msg, session, next) {var ip session.__session__.__socket__.remoteAddress.ipconsole.log(ip);}

linux内核2.6.35编译过程

一、实验目的 学习重新编译Linux内核&#xff0c;理解、掌握Linux内核和发行版本的区别。 二、实验内容 在Linux操作系统环境下重新编译内核。实验主要内容&#xff1a; A. 查找并且下载一份内核源代码&#xff0c;本实验使用最新的Linux内核2.6.36。 B. 配置内核。 C. 编…

MySQL索引的Index method中btree和hash的区别

2019独角兽企业重金招聘Python工程师标准>>> 在MySQL中&#xff0c;大多数索引&#xff08;如 PRIMARY KEY,UNIQUE,INDEX和FULLTEXT&#xff09;都是在BTREE中存储&#xff0c;但使用memory引擎可以选择BTREE索引或者HASH索引&#xff0c;两种不同类型的索引各自有其…

软件研发测试工程师英文怎么说,软件测试工程师面试英文自我介绍

《软件测试工程师面试英文自我介绍》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《软件测试工程师面试英文自我介绍(4页珍藏版)》请在人人文库网上搜索。1、软件测试工程师面试英文自我介绍篇一、范文Im , Im twenty-six year old, I majored in E-business and wit…

JavaScript禁用页面刷新

JavaScript禁用页面刷新代码如下&#xff1a; //禁用F5刷新document.onkeydown function (){if (event.keyCode 116) {event.keyCode 0;event.cancelBubble true;return false;}}//禁止右键弹出菜单document.oncontextmenu function () {return false;} 添加完成之后&…