当前位置: 首页 > news >正文

大良营销网站建设流程wordpress资源下载

大良营销网站建设流程,wordpress资源下载,wordpress注册设置,网站搜索优化【题目链接】 ybt 1522:网络 OpenJudge 百练 1144:Network 【题目考点】 1. 图论:割点 【解题思路】 每个交换机是一个顶点,如果两地点之间有电话线连接,那么两顶点之间有一条无向边,该图是无向图。 初始时任何地…

【题目链接】

ybt 1522:网络
OpenJudge 百练 1144:Network

【题目考点】

1. 图论:割点

【解题思路】

每个交换机是一个顶点,如果两地点之间有电话线连接,那么两顶点之间有一条无向边,该图是无向图。
初始时任何地点之间都是可以通讯的,也就是说这是一个无向连通图。
如果一个交换机停止工作,导致其它一些地点不能通讯,这样的地点交灾区。那么也就是图中去掉该顶点后,有些顶点之间不再连通(没有路径),那么也就是整个图不再是连通图。这样的点就是割点。
灾区就是割点,统计灾区的数量就是统计割点的数量。
使用tarjan算法求出所有割点,将割点保存在一个set中,或用数组标记哪些顶点是割点,而后统计割点数量。

【题解代码】

解法1:Tarjan算法求割点,使用set保存割点
#include <bits/stdc++.h>
using namespace std;
#define N 105
int n, m;
vector<int> edge[N];//edge[i]:顶点i的邻接点 
int dfn[N], low[N], ts, root;
set<int> cutVer;
void tarjan(int u)
{int child = 0;dfn[u] = low[u] = ++ts;for(int v : edge[u]){if(dfn[v] == 0){tarjan(v);low[u] = min(low[u], low[v]);if(u == root && ++child > 1 || u != root && dfn[u] <= low[v])cutVer.insert(u);}elselow[u] = min(low[u], dfn[v]);} 
}
int main()
{int f, t;while(cin >> n && n != 0){ts = 0;//变量初始化 for(int i = 1; i <= n; ++i)edge[i].clear();memset(dfn, 0, sizeof(dfn));cutVer.clear();while(cin >> f && f != 0)while(cin.get() != '\n'){cin >> t;edge[f].push_back(t);edge[t].push_back(f);}for(int v = 1; v <= n; ++v) if(dfn[v] == 0)tarjan(root = v);cout << cutVer.size() << endl;}return 0;
}
解法2:Tarjan算法求割点,使用标记数组保存割点
#include <bits/stdc++.h>
using namespace std;
#define N 105
int n, dfn[N], low[N], ts, root, ct;
vector<int> edge[N];
bool cutVer[N];//cutVer[i]:i是否是割点
void tarjan(int u)
{int child = 0;dfn[u] = low[u] = ++ts;for(int v : edge[u]){if(dfn[v] == 0){tarjan(v);low[u] = min(low[u], low[v]);if(u == root && ++child > 1 || u != root && dfn[u] <= low[v])cutVer[u] = true;//u是割点 }elselow[u] = min(low[u], dfn[v]); }
} 
int main()
{int f, t;while(cin >> n && n != 0){ts = ct = 0;//变量初始化 for(int i = 1; i <= n; ++i)edge[i].clear();memset(cutVer, 0, sizeof(cutVer));memset(dfn, 0, sizeof(dfn));while(cin >> f && f != 0)while(cin.get() != '\n'){cin >> t;edge[f].push_back(t);edge[t].push_back(f);}for(int v = 1; v <= n; ++v) if(dfn[v] == 0)tarjan(root = v);for(int v = 1; v <= n; ++v) if(cutVer[v])//统计割点数量 ct++;cout << ct << endl;}return 0;
}
http://www.dtcms.com/a/551296.html

相关文章:

  • Redis性能调优指南
  • 揭阳模板网站建站检察机关门户网站建设自查报告
  • 丽水北京网站建设湖北最近发生的新闻
  • 怎样建设商城网站做网站制作课程总结
  • 怎么做多语言的网站青岛三吉互联网站建设公司
  • 网站广告牌制作教程网站建设的要求及标准
  • 北京网站建设在线杭州自助建站
  • 广州网站设计总部机关门户网站 建设 方案
  • 企业网站建设方案书怎么写毕业设计旅游网站开发
  • 中国网站建设公司图片wordpress图片放大插件
  • 建设银行企业网站打不开长春制作门户网站的公司
  • 郑州网站建设公司排行榜中国十大网站
  • 网站建设项目进度表wordpress 高级
  • 吉林省延边州建设局网站广告设计与制作内容
  • 建设网站的需要的工具新乡网站建设找哪家
  • 网站重构怎么做dw2019怎么做网站
  • 三亚房产做公示是什么网站ftp下的内部网站建设
  • 国内空间站wordpress会员可见
  • 中国企业网站设计案例南昌网站设计资讯
  • seo网站推广怎样深圳建筑室内设计网站
  • 网站建设拷贝软件淘客做网站运营
  • 小软件下载网站大连模板网站制作
  • 点击app图标进入网站怎么做个人网站定制
  • 山东省住房和城乡建设厅网站定额站深圳住房与建设局官方网站
  • k8s的包管理工具helm3--流程控制语句和变量(3)
  • 电子商务网站建设与安全python编程快速上手
  • 合理的网站结构有没有做3d衣服模型网站
  • 金沙网站怎么做代理网站设计旅行社新闻内容
  • 长沙电商网站制作小说网站制作
  • 文山州住房和城乡建设网站珍岛信息技术有限公司做网站服务