ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

识别水果 c++

2022-01-08 22:03:32  阅读:197  来源: 互联网

标签:水果 女神 int 有毒 c++ m1 m2 识别


题目描述:

在海上漂泊了249天后,由于食物和水都已消耗光了,三人已是筋疲力尽。终于,在第250天的早晨,一个隐隐约约的黑点在远处出现了,是一个小岛,三大护法高兴的几乎要跳起来。于是下令舰队全速前进,驶向小岛。

在登陆后,他们才知道,这就是著名的移花岛,岛上有三位女神:dp女神、涓涓女神和紫晶女神。由于三大女神与holy_one的关系不错,因此高兴地接待了他们三人。由于看到三人饥渴难耐,负责岛上水果的涓涓女神便带他们去了果园。

果园里水果丰富,共有n个,它们的标号为1~n,但有些水果是有毒,而且水果与水果之间有藤蔓相连,如果一个水果有毒,那么所有与它相连的所有水果都是有毒的。其中m个水果上面会贴着一个标签,从标签上可以看出这个水果是否有毒。当然,如果这个水果的标签显示无毒,但它与有毒的水果相连,那它也是有毒的。

为帮助三人尽快吃到水果,涓涓女神给了他们一张毒物字典,只有通过字典上的对应关系翻译后,才能知道水果是否有毒。转化后的名称中包含‘poison’,即表示这个水果有毒。

输入格式:

第一行,字符串a

第二行,字符串b

a串和b串长度都是26,a[i]到b[i]表示两个字母的对应关系。注意,对应关系是单向的。

两个整数n和m(m<=n<=10000)。

以下m行,每行第一个数是水果的标号k,后面是第k个水果的标签s,k和s之间有空格分隔开,标签长度小于255。

一个整数p。

以下p行,每行两个整数x,y 表示第x个水果和第y个水果之间有藤蔓相连。

输出格式:

无毒的水果的个数。

样例输入:

jgltnkyvhefdoszmcwqarixupb
ibtoupqadsxkcmrynhzegwljvf
10 6
6 awg
1 nij
3 ktjetcjip
7 nim
2 gqv
10 ktjetczfw
4
1 2
1 7
3 2
10 8

样例输出:

4
#include <bits/stdc++.h>
using namespace std;
string s,s1,s2;
bool a[10001][10001];   //存储一个图,a[i][j] =1,表示第i个水果和第j个水果是有直接相连
int n,m,n1,n2,m1,m2,ans;
unordered_map<char,char> maps;
unordered_set< int > b;//集合,每个元素只储存一个
queue<int> q;
int main(){
	cin>>s1>>s2;
	for(int i=0; i<s1.size(); i++){
		maps[s1[i]]=s2[i];	
	}
	cin>>n>>m;
	for(int i=1; i<=m; i++){
		cin>>n1>>s;
		if(s.size()<6) continue; //继续下一次循环,不是跳出循环,跳出是break
		for( auto  &j : s ){//新版本的功能,C++11
			j = maps[j];
		}
		if(int (s.find("poison")) != -1){
			q.push(n1);  //把有毒的水果,放入队列
			b.insert( n1 );
		}
	}
	cin>>n2;
	while(n2>0){
		scanf("%d %d", &m1, &m2);
		a[m1][m2]=a[m2][m1]=1;
		n2--;
	}
	//=============================BFS
	while( !q.empty() ){
		int x=q.front();
		ans++;
		for(int i=1; i<=n; i++){  //枚举所有的水果编号
			if( a[x][i]  && b.count(i) == 0 ){ //b.find( i ) == b.end() 
				q.push(i);
				b.insert( i );
			}
		}
		q.pop();
    }
    cout << n-ans;
}

标签:水果,女神,int,有毒,c++,m1,m2,识别
来源: https://blog.csdn.net/m0_61048491/article/details/122387317

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有