关于图连通性的几道题(水)

 

POJ 2186 强连通分量缩点

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 int en[10010], col[10010], dfn[10010], low[10010], stack[10010], tot[10010], chu[10010];
 7 bool ins[10010];
 8 int n, m, esize, dtime, stop, scc;
 9 struct edge{
10     int v, n;
11 } e[50010];
12 void insert(int u, int v)
13 {
14     e[esize].v = v;
15     e[esize].n = en[u];
16     en[u] = esize ++;
17 }
18 void dfs(int x)
19 {
20     dfn[x] = low[x] = dtime ++;
21     stack[stop++] = x;
22     ins[x] = true;
23     for (int t = en[x]; t != -1; t = e[t].n){
24         int v = e[t].v;
25         if (!dfn[v]){
26             dfs(v);
27             low[x] = min(low[x], low[v]);
28         }
29         else if (ins[v]){
30             low[x] = min(low[x], dfn[v]);
31         }
32     }
33     if (dfn[x] == low[x]){
34         scc ++;
35         while(stack[--stop] != x){
36             col[stack[stop]] = scc;
37             ins[stack[stop]] = false;
38         }
39         col[x] = scc;
40         ins[x] = false;
41     }
42 }
43 int main()
44 {
45     scanf("%d %d", &n, &m);
46     int a, b;
47     esize = 0;
48     memset(en, -1, sizeof(en));
49     for (int i = 0; i < m; i++){
50         scanf("%d %d", &a, &b);
51         insert(a, b);
52     }
53     memset(dfn, 0, sizeof(dfn));
54     memset(col, 0, sizeof(col));
55     memset(ins, 0, sizeof(ins));
56     dtime = 1; stop = 0; scc = 0;
57     for (int i = 1; i <= n; i++)
58         if (!dfn[i]) dfs(i);
59     memset(chu, 0, sizeof(chu));
60     memset(tot, 0, sizeof(tot));
61     for (int i = 1; i <= n; i++){
62         int u = col[i];
63         tot[u]++;
64         for (int t = en[i]; t != -1; t = e[t].n){
65             int v = col[e[t].v];
66             if (u != v)
67                 chu[u] ++;
68         }
69     }
70     int cnt = 0, ans;
71     for (int i = 1; i <= scc; i++)
72         if (chu[i] == 0){
73             cnt ++;
74             ans = tot[i];
75         }
76     if (cnt > 1) ans = 0;
77     printf("%d\n", ans);
78     return 0;
79 }
View Code

 

 

POJ 1144 TOJ 1026 求割点数量

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 using namespace std;
 7 
 8 int esize, n, root, dtime;
 9 struct edge{
10     int v, n;
11 } e[100000];
12 int en[200], dfn[200], low[200];
13 bool cut[200];
14 int min(int a, int b)
15 {
16     if (a < b) return a; else return b;
17 }
18 void insert(int u, int v)
19 {
20     e[esize].v = v;
21     e[esize].n = en[u];
22     en[u] = esize++;
23 }
24 void dfs(int x, int fa)
25 {
26     int son = 0;
27     dfn[x] = low[x] = dtime++;
28     for (int t = en[x]; t != -1; t = e[t].n){
29         int v = e[t].v;
30         if (v == fa) continue;
31         if (!dfn[v]){
32             son++;
33             dfs(v, x);
34             low[x] = min(low[x], low[v]);
35             if ((x != root && low[v] >= dfn[x]) || (x == root && son > 1))
36                 cut[x] = true;
37         }
38         else{
39             low[x] = min(low[x], dfn[v]);
40         }
41     }
42 }
43 int main()
44 {
45     while(scanf("%d", &n) == 1 && n)
46     {
47         memset(en, -1, sizeof(en));
48         int x, y, esize = 0;
49         char ch;
50         while(scanf("%d", &x) == 1 && x){
51             while((ch = getchar()) != '\n'){
52                 scanf("%d", &y);
53                 insert(x, y);
54                 insert(y, x);
55             }
56         }
57         memset(dfn, 0, sizeof(dfn));
58         memset(cut, 0, sizeof(cut));
59         root = 1; dtime = 1;
60         dfs(1, 0);
61         int ans = 0;
62         for (int i = 1; i <= n; i++)
63             if (cut[i]) {
64                 ans++;
65             }
66         printf("%d\n", ans);
67     }
68     return 0;
69 }
View Code

 

 

HDOJ 4738 无向图求桥

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 const int inf = 2147483647;
 7 int esize, n, m, dtime, ans;
 8 int low[1010], dfn[1010], en[1010], f[1010];
 9 struct edge{
10     int v, n, w;
11     bool u;
12 } e[2002000];
13 int getf(int x)
14 {
15     if (x == f[x]) return x;
16     f[x] = getf(f[x]);
17     return f[x];
18 }
19 void unionxy(int x, int y)
20 {
21     int xroot = getf(x),
22         yroot = getf(y);
23     f[xroot] = yroot;
24 }
25 void insert(int u, int v, int w){
26     e[esize].v = v;
27     e[esize].n = en[u];
28     e[esize].w = w;
29     e[esize].u = false;
30     en[u] = esize ++;
31 }
32 void dfs(int u)
33 {
34     low[u] = dfn[u] = dtime ++;
35     for (int t = en[u]; t != -1; t = e[t].n){
36         if (e[t^1].u) continue;
37         e[t].u = true;
38         int v = e[t].v;
39         if (!dfn[v]){
40             dfs(v);
41             low[u] = min(low[u], low[v]);
42             if (low[v] > dfn[u]){
43                 if (e[t].w == 0)
44                     ans = min(ans, 1);
45                 else
46                     ans = min(ans, e[t].w);
47             }
48         }
49         else
50             low[u] = min(low[u], dfn[v]);
51     }
52 }
53 int main()
54 {
55     while(scanf("%d %d", &n, &m) && (n + m))
56     {
57         memset(en, -1, sizeof(en));
58         esize = 0;
59         for (int i = 1; i <= n; i++)
60             f[i] = i;
61         int x, y, w;
62         for (int i = 0; i < m; i++){
63             scanf("%d %d %d", &x, &y, &w);
64             insert(x, y, w);
65             insert(y, x, w);
66             unionxy(x, y);
67         }
68         int cnt = 0;
69         for (int i = 1; i <= n; i++)
70             if (f[i] == i) cnt ++;
71         if (cnt > 1){
72             puts("0");
73             continue;
74         }
75         memset(dfn, 0, sizeof(dfn));
76         dtime = 1, ans = inf;
77         for (int i = 1; i <= n; i++)
78             if (!dfn[i]) dfs(i);
79         if (ans == inf) ans = -1;
80         printf("%d\n", ans);
81     }
82     return 0;
83 }
View Code

 

转载于:https://www.cnblogs.com/james47/p/3903474.html

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

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

相关文章

一台计算机硬盘容量标为800gb,一台计算机的硬盘容量标为800GB,其存储容量是()。...

台硬盘不适的装用于料是室外饰材。行的有_能进操作&#xff0c;计算机系统源管在W“资”中操作理器。不正有_确的&#xff0c;容量下列叙述中。的有描述正确&#xff0c;其存文输的中s系统下关于入。文档选定应_整篇&#xff0c;储容d文档编在W辑中。不能作进行_操&#xff0c;…

jQuery验证插件

jQuery验证插件 原文:jQuery验证插件学习要点&#xff1a; 1.使用 validate.js 插件 2.默认验证规则 3.validate()方法和选项 4.validate.js 其他功能 验证插件&#xff08;validate.js&#xff09;&#xff0c;是一款验证常规表单数据合法性的插件。使用它&#xff0c;极大的解…

爱思助手更新后无法连接服务器,爱思助手出现无法连接或连接超时的操作教程...

使用爱思助手的用户很多&#xff0c;一些新用户不清楚出现无法连接或连接超时怎样处理&#xff0c;今天小编给大家带来在爱思助手出现无法连接或连接超时的操作教程&#xff0c;希望可以帮到大家。爱思助手出现无法连接或连接超时的操作教程一、数据线和电脑USB接口正常状态请确…

计算机演示题打不开,大神为你演示win7系统计算机上右键管理打不开的还原技巧...

当我们经常使用的电脑工作的时候&#xff0c;时间久了难免会遇到win7系统计算机上右键管理打不开的问题&#xff0c;如今就有用户反映在使用电脑的时候遇到win7系统计算机上右键管理打不开的情况不知怎么解决&#xff0c;针对这个问题小编就整理总结出win7系统计算机上右键管理…

apache lucene_Apache Lucene拼写检查器的“您是不是要”功能

apache luceneGoogle的“您是不是要”功能 在上一篇文章中对Lucene进行了介绍之后 &#xff0c;现在是时候提高它并创建一个更复杂的应用程序了。 您肯定最熟悉Google的“您是不是要”功能&#xff08;其他搜索引擎也支持此功能&#xff09;。 这是一个例子&#xff1a; Luce…

荣耀6手机常显示无法链接服务器怎么处理,华为手机连接上WiFi上不了网怎么办...

华为手机(Mate7,荣耀6 Plus,荣耀6,P7) 连接上WiFi上不了网怎么办每当小编被遇到这样的问题&#xff0c;小编都会深深的醉一把。这样的问题就应该被消灭在火星上&#xff0c;谁让他来地球的。网络就像一张大网&#xff0c;哪个节点有问题都可能导致WIFI连上无法上网&#xff0c;…

jboss 配置上下文路径_JBoss Portal上的“ Hello World” portlet

jboss 配置上下文路径Portlet概述 本教程将向您展示如何创建和部署简单的Portlet。 Portlet是基于Java技术的Web组件&#xff0c;可以处理请求并生成动态内容。 Portlet不是自治实体&#xff0c;但是由Portlet容器管理&#xff0c;Portlet容器为Portlet执行提供了必要的运行时…

创建型-工厂方法模式

1、工厂方法模式意图&#xff1a; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 工厂方法模式用于为属于同一类别的产品定义对应的具体工厂类&#xff0c;并将具体工厂类开放给用户类来使用。 2、应用场景&…

服务器添加角色显示灰色,添加角色 web服务器 灰色

添加角色 web服务器 灰色 内容精选换一换OneAccess支持通过AD认证用户身份和控制权限。AD全称Active Directory&#xff0c;中文名称活动目录。您可以将AD简单理解成一个数据库&#xff0c;其存储有关网络对象的信息&#xff0c;方便管理员和用户查找所需信息。本文主要介绍One…

虚拟服务器关机怎么开,云服务器关机了怎么开启

云服务器关机了怎么开启 内容精选换一换开启防护后&#xff0c;您可以根据需要进行安全配置。包括配置常用登录地、常用登录IP、SSH登录IP白名单&#xff0c;开启恶意程序自动隔离查杀功能。配置常用登录地后&#xff0c;企业主机安全服务将对非常用地登录主机的行为进行告警。…

web文件怎么传到服务器,web文件传到服务器

web文件传到服务器 内容精选换一换工具中所有涉及上传文件功能的&#xff0c;如果需要上传的文件大于1GB或者解压后超过剩余磁盘空间的一半&#xff0c;则需要释放磁盘空间或手动将文件上传至服务器&#xff0c;其他情况可通过Web界面上传功能上传。Web服务端证书&#xff0c;即…

weblogic ejb_使用Oracle WebLogic对应用程序外部的EJB的引用

weblogic ejb在之前的文章中&#xff0c;我们对EJB 3.0版及其为您提供的构建Java EE应用程序的可移植机制进行了概述。 由于Java EE规范都是关于可移植性的&#xff0c;因此冒着重复自我的风险&#xff0c;我们经常强调EJB v。3.0规范上仍然存在最重要的可移植性限制&#xff1…

Android Studio显示行数

Android Studio在打开的文件左側单击鼠标右键&#xff0c;也能像Eclipse一样设置显示代码行数&#xff0c;如图1。可是这边跟Eclipse有一个非常大的差别&#xff0c;Eclipse设置后&#xff0c;其余的相应文件也跟着生效&#xff0c;即使文件关闭后又一次打开行数也还是会显示&a…

visio 小技巧

Visio作图非常的方便 目前我还是用Visio2003&#xff0c;有一些小技巧&#xff0c;记录一下。 1、visio修改文本框文字对齐方式。默认的对齐方式是上下、左右居中。修改的位置: 在一个文档中可以插入多个标签页&#xff0c;当需要分页&#xff0c;用不同页归类不同信息的时候使…

java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配

java中字符串的精确匹配在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论String性能调优。 我们将专注于如何有效地处理字符串创建&#xff0c; 字符串更改和字符串匹配操作。 此外&#xff0c;我们将提供我们自己的用于精确字…

My.Ioc 代码示例——避免循环依赖

本文的目的在于通过一些示例&#xff0c;向大家说明 My.Ioc 支持哪些类型的依赖关系。也就是说&#xff0c;如何设计对象不会导致循环依赖。 在 Ioc 世界中&#xff0c;循环依赖是一个顽敌。这不仅因为它会导致 Ioc 容器抛出异常&#xff0c;而且还因为它是不可预知的&#xff…

asp.net中两款文本编辑器NicEdit和Kindeditor

分类&#xff1a; C#/ASP.Net 2012-10-09 22:35 665人阅读 评论(0) 收藏 举报 文本编辑asp.nettextboxserveraspsafari目录(?)[] 做过Web开发的朋友相信都使用过富文本编辑器&#xff0c;比较出名的CuteEditor和CKEditor很多人应该已经使用过&#xff0c;在功能强大的同时需要…

导出oracle awr分析报告,配置oracle内存参数,察看表空间使用率

cmd 命令生成awr报告: cmd 窗口 输入 -> Sqlplus sys/orclorcl as sysdba (sys登陆oracle).导出awr命令 ?/rdbms/admin/awrrpt.sql 3..输入导出的文件格式 为 html 回车 4输入数字1 为导出今天的分析报告 &#xff0c;2 3 。。。&#xff0c;回车 5.输入开始 snap id…

android多点触控自由对图片缩放

在系统的相册中,观看相片就可以用多个手指进行缩放.要实现这个功能,只需要这几步:1.新建项目,在项目中新建一个ZoomImage.javapublic class ZoomImageView extends View {//初始化状态常量public static final int STATUS_INIT1;//图片放大状态常量public static final int STA…

jboss eclipse_调试生产服务器– Eclipse和JBoss展示

jboss eclipse您是否编写有错误的代码&#xff1f; 不&#xff0c;当然不是。 对于我们其余的人&#xff0c;他们确实会编写带有bug的代码&#xff0c;我想解决一个非常敏感的问题&#xff1a;调试在生产服务器上运行的应用程序。 因此&#xff0c;您的应用程序已准备好进行部…