zoukankan      html  css  js  c++  java
  • zoj 1119 /poj 1523 SPF

    题目描述:
    考虑图8.9中的两个网络,假定网络中的数据只在有线路直接连接的2个结点之间以点对点
    的方式传输。一个结点出现故障,比如图(a)所示的网络中结点3出现故障,将会阻止其他某些结
    点之间的通信。结点1和结点2仍然是连通的,结点4和结点5也是连通的,但这2对结点之间
    的通信无法进行了。因此结点3是这个网络的一个SPF结点。
    严格的定义:对于一个连通的网络,如果一个结点出现故障,将会阻止至少一对结点之间的
    通信,则该结点是SPF结点。
    注意,图所示的网络不存在SPF结点。至少两个结点出现故障后,才会使得其他某对
    结点之间无法通信。
    输入描述:
    输入文件包含多个测试数据,每个测试数据描绘了一个网络。每个网络的数据包含多对整数,
    每对整数占一行,表示两个直接连接的结点。结点对中两个结点的顺序是无关的,1 2和2 1表示
    同一对连接。结点序号范围为1~1000,每个网络的数据中最后一行为一个0,表示该网络数据
    的结束。整个输入文件最后一行为一个0,代表输入结束。读入时需要忽略输入文件中的空行。
    图 SPF结点
    输出描述:
    对输入文件中的每个网络,首先输出该网络在输入文件中的序号,然后是该网络中的SPF结
    点。具体格式为:第一个网络的序号为"Network #1",第二个网络的序号为"Network #2",等等。
    对网络中的每个SPF结点,输出占一行,输出格式如样例输出所示,输出信息标明SPF结点的
    序号及该SPF结点出现故障后将整个网络分成几个连通的子网络。如果网络中不存在SPF结点,
    则只输出"No SPF nodes"。每两个网络的输出之间,输出一个空行。

    // 求无向图连通图的割点 以及 去掉该割点后图分成几个连通块
    // Tarjan 算法的应用
    #include <iostream> #include <algorithm> #include <queue> #include <math.h> #include <stdio.h> #include <string.h> using namespace std; #define MOD 1000000007 #define maxn 1010 bool G[maxn][maxn]; int low[maxn],pre[maxn]; int ans[maxn]; int dfst; int node; int child; void init(){ dfst=0; node=0; child=0; memset(G,0,sizeof(G)); memset(ans,0,sizeof(ans)); memset(pre,0,sizeof(pre)); } int dfs(int u){ int lowu; lowu=pre[u]=++dfst; int v; for(v=1;v<=node;v++){ if(G[u][v]){ if(!pre[v]){ int lowv=dfs(v); lowu=min(lowu,lowv); if(lowv>=pre[u]){ if(u!=1) ans[u]++; else child++; } } else lowu=min(lowu,pre[v]); } } return lowu; } int main() { int u,v; int Case=0; while(scanf("%d",&u),u){ init(); scanf("%d",&v); node=max(u,v); G[u][v]=G[v][u]=1; while(scanf("%d",&u),u){ scanf("%d",&v); node=max(node,v); node=max(node,u); G[u][v]=G[v][u]=1; } dfs(1); int found=0; if(child>1) ans[1]=child-1; if(Case) printf(" "); printf("Network #%d ",++Case); for(int i=1;i<=node;i++) if(ans[i]){ found=1; printf(" SPF node %d leaves %d subnets ",i,ans[i]+1); } if(!found) printf(" No SPF nodes "); } return 0; }
  • 相关阅读:
    vue-nuxtjs
    mongodb4.0支持事务
    promisify,promisifyAll,promise.all实现原理
    nodejs, 阿里oss上传下载图片
    数据库备份与还原
    SQL 数据类型、约束、索引及视图
    数据库的查询
    数据库(增、删、改、查)
    数据库基础知识
    C#语言小结
  • 原文地址:https://www.cnblogs.com/372465774y/p/3203517.html
Copyright © 2011-2022 走看看