zoukankan      html  css  js  c++  java
  • TOJ 3660 家庭关系

    描述

    给定若干家庭成员之间的关系,判断2个人是否属于同一家庭,即2个人之间均可以通过这些关系直接或者间接联系。

    输入

    输入数据有多组,每组数据的第一行为一个正整数n(1<=n<=100),表示有100个关系描述,接下来有n行,每行的描述方式为:
    p1 p2 c
    其中p1、p2和c均为一串文本,表示每个人的姓名,p1和p2为c的父亲和母亲。
    最后一行包含2个字符串a和b,为待判断的两个人的姓名。
    每个人的姓名由大小写字母组成,长度不超过80。

    若n为0,表示输入结束。

    输出

    如果a和b在同一个家庭中,则输出Yes
    否则输出No

    样例输入

    2
    Barbara Bill Ted
    Nancy Ted John
    John Barbara
    3
    Lois Frank Jack
    Florence Bill Fred
    Annie Fred James
    James Jack
    0
    

    样例输出

    Yes
    No


    floyd传递闭包

    写了好长时间,一直得不到正确答案,后来发现map没有清空~~~欲哭无泪!

    #include <stdio.h>
    #include <map>
    #include <string>
    #include <iostream>
    #define MAXN 350
    using namespace std;
    
    int cnt;
    int f[MAXN][MAXN];
    map< string,int > M;
    
    void floyd(){
    	for(int k=1; k<cnt; k++){
    		for(int i=1; i<cnt; i++){
    			for(int j=1; j<cnt; j++){
    				if( f[i][k] && f[k][j])
    					f[i][j]=f[i][k] && f[k][j];
    			}
    		}
    	}
    }
    
    void addedge(int u, int v){
    	f[u][v]=1;
    	f[v][u]=1;
    }
    
    void init(string fa, string ma, string ch, int& cnt){
    	if(M[fa]==0)M[fa]=cnt++;
     	if(M[ma]==0)M[ma]=cnt++;
     	if(M[ch]==0)M[ch]=cnt++;
     	addedge(M[fa],M[ma]);
     	addedge(M[ma],M[ch]);
     	addedge(M[fa],M[ch]);
    }
    int main(int argc, char *argv[])
    {
    	int n;
    	string a,b;
    	while(scanf("%d",&n)!=EOF && n){
    		M.clear();	
    		memset(f,0,sizeof(f));
    		cnt=1;
    		for(int u=1; u<=n; u++){
    			string fa,ma,ch;
    			cin>>fa>>ma>>ch;
    			init(fa,ma,ch,cnt);
    		}
    		
    		floyd();
    		cin>>a>>b;
    		if(f[M[a]][M[b]]){
    			cout<<"Yes"<<endl;
    		}else{
    			cout<<"No"<<endl;
    		}
    		
    	}
    	return 0;
    }
    
  • 相关阅读:
    FastMM、FastCode、FastMove的使用(图文并茂)
    12种JavaScript MVC框架之比较
    十款最佳Node.js MVC框架
    Couchbase 服务器
    C#程序员阅读的书籍
    ORM的实现
    Linux内核策略介绍
    ASP.NET MVC + EF 利用存储过程读取大数据
    面向.Net程序员的dump分析
    动态加载与插件化
  • 原文地址:https://www.cnblogs.com/chenjianxiang/p/3534757.html
Copyright © 2011-2022 走看看