例题11-4 电话圈(Calling Circles, ACM/ICPC World Finals 1996, UVa247)

2024-04-13 03:18

本文主要是介绍例题11-4 电话圈(Calling Circles, ACM/ICPC World Finals 1996, UVa247),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题链接:https://vjudge.net/problem/UVA-247
分类:图论
备注:Floyd传递闭包

注意:逗号后面有空格,否则显示WA

代码如下:

#include<iostream>
#include<map>
#include<vector>
#include<cstring>
using namespace std;
const int maxn = 30;
string name[maxn];
int n, m, fa[maxn], kase;
int find(int x) {return fa[x] == x ? x : fa[x] = find(fa[x]);
}
int main(void) {while (~scanf("%d %d", &n, &m) && n) {map<string, int>id;bool g[maxn][maxn] = { 0 };int cnt = 0;for (int i = 0; i < n; i++)fa[i] = i;while (m--) {string u, v;cin >> u >> v;if (!id.count(u)) {id[u] = cnt; name[cnt++] = u;}if (!id.count(v)) {id[v] = cnt; name[cnt++] = v;}g[id[u]][id[v]] = true;}for (int k = 0; k < n; k++) for (int i = 0; i < n; i++) if (g[i][k]) for (int j = 0; j < n; j++)g[i][j] = g[i][j] || (g[i][k] && g[k][j]);vector<string>ans[maxn];for (int i = 0; i < n - 1; i++)for (int j = i + 1; j < n; j++)if (g[i][j] && g[j][i] && find(i) != find(j)) {fa[find(j)] = find(i);}for (int i = 0; i < n; i++) {ans[find(i)].push_back(name[i]);}if (kase)cout << "\n";printf("Calling circles for data set %d:\n", ++kase);for (int i = 0; i < maxn; i++) {for (int j = 0; j < ans[i].size(); j++)cout << ans[i][j] << (j == ans[i].size() - 1 ? "\n" : ", ");}}return 0;
}

这篇关于例题11-4 电话圈(Calling Circles, ACM/ICPC World Finals 1996, UVa247)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899001

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

Win32函数调用约定(Calling Convention)

平常我们在C#中使用DllImportAttribute引入函数时,不指明函数调用约定(CallingConvention)这个参数,也可以正常调用。如FindWindow函数 [DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]public static extern IntPtr FindWindow

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

【AI大模型应用开发】2.1 Function Calling连接外部世界 - 入门与实战(1)

Function Calling是大模型连接外部世界的通道,目前出现的插件(Plugins )、OpenAI的Actions、各个大模型平台中出现的tools工具集,其实都是Function Calling的范畴。时下大火的OpenAI的GPTs,原理就是使用了Function Calling,例如联网检索、code interpreter。 本文带大家了解下Function calling,看

正规式与有限自动机例题

答案:D 知识点: 正规式 正规集 举例 ab 字符串ab构成的集合 {ab} a|b 字符串a,b构成的集合 {a,b} a^* 由0或者多个a构成的字符串集合 {空,a,aa,aaa,aaaa····} (a|b)^* 所有字符a和b构成的串的集合 {空,a,b,ab,aab,aba,aaab····} a(a|b)^* 以a为首字符的a,b字符串的集

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

我们依旧在追梦的路上-山东省第六届ACM比赛总结

这场比赛从结果而言达到了预期(金牌),从过程而言和我的预期相差甚远(打的太乱,个人发挥很差),还好关键时刻队友抗住压力,负责后果真的不堪设想。 热身赛 热身赛纯粹测机器的,先把A,B,C草草水过(A题小写x打成大写的也是醉了),我和老高开始各种测机器,long long不出所料是lld的,试了一下除0和数组越界的re问题,发现没有re,只有wa(甚至数组越界还AC了),至于栈深的话也没过多追

算法练习小技巧之有序集合--套路详细解析带例题(leetcode)

前言:         本文详细讲解Python中的有序集合SortedList和C++中的有序集合multiset的用法,配合leetcode的例题来展示实际的用处。(本人水平不够,还无法讲解有序集合的实现方法,只会用)         觉得有帮助或者写的不错可以点个赞,后面也有几道我找出来的题目可以用这个方法快速解决的         (感觉有点水) 目录 有序集合用法讲解: