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

 

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,一经查实,立即删除!

相关文章

计算机教育 如何投稿,高职院校计算机教育论文投稿教育杂志-教育论文投稿

教育学文摘》杂志征稿启示(杂志介绍)《教育学文摘》杂志创刊于1986年,系国家级教育类学术期刊&#xff0c;精选摘编有关教育理论研究和学校改革实践方面的优秀文章&#xff0c;由教育部主管&#xff0c;中国人民大学主办&#xff0c;面向国内外公开发行&#xff0c;本刊已被中国…

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

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

提升您的Hibernate引擎

是否想知道如何调整基于Hibernate的应用程序以获得无缝的可伸缩性和最佳性能&#xff1f; 本文探讨了基于Hibernate的应用程序的调整技术&#xff0c;重点是有效但文献记载不足的调整主题&#xff0c;例如继承映射&#xff0c;二级缓存和增强的序列标识符生成器。 它还提供了一…

sql alter表字段处理

--添加字段 ALTER table WCOLLECTION add CLT_ID int null default(0) --将已有字段类型为 NULL 修改为 NOT NULLalter table table_namealter column column_name char(20) not null--添加主键ALTER table WCOLLECTION add primary key (CLT_ID)转载于:https://www.cnblogs.c…

流程图伪代码计算机语言,流程图与伪代码 PPT课件

2018考纲分析,2018考纲分析,程序设计增加部分(适应2018新考纲),目录一、程序与算法介绍1.流程图2.伪代码二、程序的基本结构,一、程序与算法介绍,软件计算机程序文档资料程序数据结构算法程序设计方法语言工具和环境,算法的表示方法有很多种常用的有&#xff1a;自然语言、流程…

2544 hdu

// 顶点从1 开始 floyed#include <stdio.h>#define N 201#define INF 100000 int g[N][N],n,m; void floyed() { int i,j,k; for(k1;k<n;k) { for(i1;i<n;i) for(j1;j<n;j) if(g[i][j]>g[i][k]g[k][j]) g[i][j]g[i][k]g[k][j] ; } } int main(){ int i,j,x,y…

笔记本计算机盖上盖子关机,笔记本电脑不关机就盖上盖子,这样好吗

笔记本电脑不关机就盖上盖子不好&#xff0c;虽然在合上笔记本待机之后&#xff0c;主板和其他部件基本上都处于待命状态&#xff0c;硬盘由高速转入低速运转&#xff0c;但是待机状态下仍然有损耗&#xff0c;长时间不关机和重启&#xff0c;有些程序占据的内存得不到释放&…

linux openjdk_OpenJDK作为Linux上的默认Java

linux openjdk大家好&#xff0c; 最近&#xff0c;我收到了很多人的私人来信&#xff0c;他们对Linux默认Java软件包的更改感到困惑/担心。 对于许多Linux发行版&#xff0c;Java的官方Sun / Oracle版本已打包为该平台的默认Java。 但是&#xff0c;由于最近的许可更改&#x…

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系统计算机上右键管理…

gwt-2.8.2下载_GWT 2 Spring 3 JPA 2 Hibernate 3.5教程– Eclipse和Maven 2展示

gwt-2.8.2下载不久前&#xff0c;我的一个朋友和同事向我飞过&#xff0c;说“世界上只有一半在使用Maven ”。 当我意识到最受欢迎的文章&#xff08;到目前为止&#xff09; GWT 2 Spring 3 JPA 2 Hibernate 3.5 Tutorial提出了一种基于Google的Web Toolkit&#xff08; GWT …

111邮箱服务器设置,如何设置Outlook邮箱帐号

在Outlook的邮箱帐号设置中&#xff0c;将POP3服务器和SMTP服务器设置成邮件服务器IP地址&#xff0c;帐号修改成"原登录帐号#原POP3服务器地址"就可以了。假设你已经有了一个 Internet 邮箱为webmasternetease.com 。netease.com的pop3服务器地址是 pop.netease.com…

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

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

获取js里添加的css文件,用JS添加一个css文件

我在这里发现了一些关于我的问题的问题&#xff0c;但我无法使用它。 通过JS点击它们时我会改变的CSS属性&#xff0c;JQuery的用JS添加一个css文件GreenRed/*$(document).ready(function() {$(".osn").mouseover(function() {uploadcss()});});*/$(document).ready(…

__construct()和__initialize()

ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法&#xff0c;总感觉不对头&#xff0c;所以自己测试了一下。将结果和大家分享。不对请更正。首先&#xff0c;我要说的是1、__initialize()不是php类中的函数&#xff0c;php类…

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

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

初学之道--MFC

放假了&#xff0c;由于作业需要&#xff0c;我开始学习了一下MFC&#xff0c;一开始不知道如何下手&#xff0c;对MFC消息的运行和管理都一概不知&#xff0c;稀里糊涂的去看windows核心编程教学&#xff0c;才知道什么叫看天书&#xff0c; 然后又下载了vs2010开发指南PDF来看…

三国轶事——巴蜀之危

三国佚事——巴蜀之危 Time Limit: 1000ms Memory limit: 65536K 有疑问&#xff1f;点这里^_^ 题目描述 话说天下大势&#xff0c;分久必合&#xff0c;合久必分。。。却道那魏蜀吴三国鼎力之时&#xff0c;多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺&#xff0c;确…

jquery ajax是什么意思,Jquery ajax

题目1&#xff1a; jQuery 中&#xff0c; $(document).ready()是什么意思&#xff1f;当html文档DOM树加载完成&#xff0c;执行ready里的函数。传递处理函数给.ready()方法&#xff0c;能保证DOM准备好后就执行这个函数&#xff0c;因此&#xff0c;这里是进行所有其它事件绑…