Uva247 Floyd传递闭包+map处理
来源:互联网 发布:财务管家婆软件 编辑:程序博客网 时间:2024/05/24 04:53
链接:https://vjudge.net/problem/UVA-247
题意:a打给b,b打给c,c打给d,d打给a,那么这四个人就在一个圈里,具有传递性,离散数学传递闭包的经典题目,a可以通过bc到达d,因为d可以到达a,所以a和d在一个圈,b可以通过cd到达a,a也可以到达b,所以ab在一个圈。如果e打给f,f不能直接或者间接打给e,那么这两个人就不在一个圈,找出所有的圈。
n最大才25,不怕超时了,floyd三重循环暴力解决
利用floyd的中间传递松弛性恰好解决。
#include <bits/stdc++.h>using namespace std;map<string,int>name;vector<string>Name;int n,m;int vis[30];int d[30][30];int id;//没什么用,就是给name逐增赋值void floyd() { for(int k = 0; k < n; k++) for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) d[i][j] = d[i][j]||(d[i][k]&&d[k][j]); }void dfs(int u) { vis[u] = 1; for(int i = 0; i < n; i++) { if(!vis[i]&&d[u][i]&&d[i][u]) { cout<<", "<<Name[i]; dfs(i); } }}int main() {// freopen("in.txt","r",stdin); int casen = 1; while(cin>>n>>m) { if(n==0&&m==0) break; Name.clear(); name.clear(); memset(d,0,sizeof(d)); memset(vis,0,sizeof(vis)); id =0; while(m--) { string a,b; cin>>a>>b; //count()函数返回map中键值等于key的元素的个数,就只能为 //1或者0,专门判断一个键值值是否存在map里面,前提是这个键值赋了key值。 if(!name.count(a)) { name[a] = id; id++; Name.push_back(a); } if(!name.count(b)) { name[b] = id; id++; Name.push_back(b); } d[name[a]][name[b]] = 1; } floyd(); if(casen>1) cout<<endl; printf("Calling circles for data set %d:\n",casen); casen++; for(int i = 0; i < n; i++) { if(!vis[i]) { cout<<Name[i]; dfs(i); cout<<endl;; } } } }
0 0
- Uva247 Floyd传递闭包+map处理
- uva247 传递闭包
- 紫书 例题 11-4 电话圈 UVa247 Floyd传递闭包
- uva247 - Calling Circles(传递闭包+DFS)
- 电话圈(Calling Circles,ACM/ICPC World Finals 1996,UVA247) ——Floyd图的传递闭包
- [开启疯狂刷题时代!]uva247 floyd+dfs闭包
- floyd闭包或者加一点并查集uva247
- UVA247 Calling Circles (有向图传递闭包)
- floyd(传递闭包)
- Floyd求传递闭包
- floyd求传递闭包
- floyd求传递闭包
- floyd 求传递闭包
- UVA247[Calling Circles] Floyed求传递闭包 || tarjan求SCC
- 最短路经典例题-紫书11-4 Calling Circles(Floyd传递闭包+map+DFS)
- POJ2570 Fiber Network floyd传递闭包
- poj 3660(Floyd传递闭包)
- POJ 2570 传递闭包 Floyd
- Nginx日志按天切割及日志基本配置说明
- [主席树] BZOJ 4571 [Scoi2016]美味
- 基于linux下的c入门-day2
- day12-jsp&el&jstl
- linux下使用yum安装mysql详解
- Uva247 Floyd传递闭包+map处理
- 非迷宫图bfs-wr,dfs-tl
- 279. Perfect Squares(unsolved)
- HDU 5867 Water problem——模拟
- Java IO 读写文件
- java.lang.ClassNotFoundException:(新建的servlet无法找到class文件)
- 《并发编程实战》第三章
- 《机器学习实战》学习笔记---朴素贝叶斯(Bayes)算法
- Hibernate+Spring:控制台不报错SQL打印正常但是无法写入数据库问题