Uva247.Calling Circles(Floyd求连通性)
来源:互联网 发布:中长发发型知乎 编辑:程序博客网 时间:2024/05/24 06:56
Uva247.Calling Circles (Floyd传递闭包)
Description
现有
Solution
Floyd传递闭包
通关传递闭包运算,求出每个人之间的连通性。当且仅当
Tarjan强连通分量
题面描述就是裸地Tarjan求强连通分量的题目,直接套板子就好。
Code
这里给出的是Floyd传递闭包的解法。
#include<bits/stdc++.h>#define ll long long#define nmax 50using namespace std;int mp[nmax][nmax];bool isout[nmax];string hashback[nmax];map<string,int> mmp;struct mes{ string a,b;}mes[nmax * nmax];int n,m,cnt = 1;void floyd(){ for(int k = 1;k<=n;++k){ for(int i = 1;i<=n;++i){ for(int j = 1;j<=n;++j){ if(mp[i][k]) mp[i][j] = mp[i][j] || (mp[i][k] && mp[k][j]); } } }}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout); int kase = 1; while(cin>>n>>m){ if(n == 0 && m ==0) break; if(kase>=2) cout<<endl; cnt = 1;mmp.clear(); memset(mp,0,sizeof mp); for(int i = 0;i<m;++i){ cin>>mes[i].a>>mes[i].b; if(mmp.count(mes[i].a) == 0) {mmp[mes[i].a] = cnt,hashback[cnt] = mes[i].a;cnt++;} if(mmp.count(mes[i].b) == 0) {mmp[mes[i].b] = cnt,hashback[cnt] = mes[i].b;cnt++;} } for(int i = 0;i<m;++i){ string a = mes[i].a,b = mes[i].b; mp[mmp[a]][mmp[b]] = 1; } floyd(); memset(isout,0,sizeof isout); cout<<"Calling circles for data set "<<kase++<<":"<<endl; for(int i = 1;i<=n;++i){ if(isout[i]) continue; cout<<hashback[i];isout[i] = true; for(int j = 1;j<=n;++j){ if(i!=j&&mp[i][j] && mp[j][i]){ cout<<", "<<hashback[j]; isout[j] = true; } } cout<<endl; } } return 0;}
阅读全文
0 0
- Uva247.Calling Circles(Floyd求连通性)
- uva247-Calling Circles-Floyd算法
- UVa247 - Calling Circles
- UVA247- Calling Circles
- UVa247 Calling Circles
- UVa247: Calling Circles 题解
- [Uva247][Tarjan求强连通分量][Calling Circles]
- Uva247——Calling Circles
- 【UVA 247】Calling Circles (floyd判断连通性+map)
- UVA247[Calling Circles] Floyed求传递闭包 || tarjan求SCC
- uva247 - Calling Circles(传递闭包+DFS)
- 247 - Calling Circles (Floyd 求传递闭包)
- UVA 247 Calling Circles ( Floyd求传递必包 )
- uva 247 Calling Circles floyd求传递闭包 + tarjin
- 电话圈(Calling Circles,ACM/ICPC World Finals 1996,UVA247) ——Floyd图的传递闭包
- UVA247- Calling Circles(有向图的强连通分量)
- UVA247 Calling Circles (有向图传递闭包)
- [中等] UVa OJ 247 Calling Circles Floyd和求连通分支
- 面试算法收集(网易)二
- (六)、Java复习笔记之异常
- mysql SELECT/UPDATE command denied to user 'root'@'localhost' for table 'XXX' 报错1142处理
- Git版本管理--reset
- python3.5《机器学习实战》学习笔记(五):决策树算法实战之预测隐形眼镜类型
- Uva247.Calling Circles(Floyd求连通性)
- 可变参数列表浅析
- c语言:错误C4473:“scanf_s”没有为格式字符串传递足够的参数
- 浅谈Android动画(二)
- week9-leetcode #19-Remove-Nth-Node-From-End-of-List
- 设计模式之JDK动态代理
- 软件测试--并非所有软件缺陷生来就是平等的
- SSM项目中存入数据库中文乱码的问题
- CSS伪类选择器(锚点伪类、行为伪类)