acm-UVA247解题报告
来源:互联网 发布:女士马丁靴品牌知乎 编辑:程序博客网 时间:2024/06/05 07:11
题目大意: 电话圈组成,回路判断问题
解题思路: 转化字符串以后,用五行Floyd判断包闭
代码:
#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<iostream>using namespace std;#define maxn 50int map[maxn][maxn],n,m;int vis[maxn];char name[maxn][50];int charge(char *s){ int i; for(i=0;i<m;i++) if(strcmp(name[i],s)==0)return i; if(i==m) { strcpy(name[m],s);m++; return m-1; }}void dfs(int u){ vis[u]=1; for(int i=0;i<n;i++) if(map[u][i]==1&&map[u][i]==map[i][u]) { if(vis[i]==0) { cout<<", "<<name[i]; dfs(i); } }}int main(){ int Case=1;int bian; while(~scanf("%d%d",&n,&bian)&&n!=0&&bian!=0) { memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); char start[50],finish[50],str1[50],str2[50]; cin>>start>>finish; strcpy(name[0],start);strcpy(name[1],finish);m=2; map[0][1]=1; int x,y; for(int i=0;i<bian-1;i++) { cin>>str1>>str2; x=charge(str1);y=charge(str2); map[x][y]=1; } for(int k=0;k<n;k++) for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(map[k][j]==1&&map[i][k]==1)map[i][j]=1;/* for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { cout<<map[i][j]<<" "; } cout<<endl; }*/ cout<<endl; cout<<"Calling circles for data set "<<Case<<":"<<endl; Case++; for(int i=0;i<n;i++) { if(vis[i]==0) { cout<<name[i]; dfs(i); cout<<endl; } } } return 0;}
0 0
- acm-UVA247解题报告
- ACM--HDOJ2005解题报告
- ACM--HDOJ2503解题报告
- ACM--HDOJ2004解题报告
- ACM--HDOJ2502解题报告
- ACM--HDOJ2031解题报告
- ACM--HDOJ1201解题报告
- ACM解题报告
- ACM解题报告
- ACM-FZOJ1011解题报告
- ACM解题报告 POJ1012
- acm-poj1068解题报告
- acm-poj1051解题报告
- acm-poj1050解题报告
- acm-poj1004解题报告
- acm-poj1003解题报告
- acm-hdu5264解题报告
- acm-hdu5265解题报告
- 我的前端学习笔记 关于em和rem的使用
- MFC中的MoveTo和LineTo
- 达内学习日志 DAY02:变量与java的基本数据类型(int,long,float,double,char,boolean)
- NRF24L01——工作原理(关于发送接收通道地址)解读
- ArrayList,LinkedList,Vector
- acm-UVA247解题报告
- AngularJs学习笔记__1、初步了解AngularJS
- [深入理解Android卷一全文-第四章]深入理解zygote
- hdu1016(Prime Ring Problem)
- 一款简单实用的jQuery图片画廊插件
- scala隐式转换 及并发
- 深入浅出Tabhost+简单入门Demo
- Docker学习5 - 镜像
- 通过 VMware 安装 Mac OS X 10.10 Yosemite 8