A1034

Posted tao7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A1034相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<map>
#include<set>
#include<vector>
//研究一下stringToInt 
using namespace std;
map<string,int>stringToInt;
map<string,int>time1;
set<string>s;
map<int,string>IntTostring;
const int MAXV=1010;
bool G[MAXV][MAXV]={false};
int weight[MAXV][MAXV],we[MAXV]={0},count=0,tot=0,aut=0,head,max1,tot1=0,maxv;
bool visited[MAXV];
vector<int>v1;
vector<int>v2;
int reverse(string s){
	if(stringToInt[s]==0){
		stringToInt[s]=++aut;
		IntTostring[aut]=s;
		maxv=aut;
		
		return aut;
	}else return stringToInt[s];
}
int DFS(int v){
	count++;

	visited[v]=true;
	for(int i=1;i<MAXV;i++){
		if(weight[v][i]!=0&&!G[v][i]){
			tot+=weight[v][i];
			G[v][i]=true;
			if(we[i]>max1){
				max1=we[i];
				head=i;
			}
			if(!visited[i])
				DFS(i);
		}
	}
	return head;
}
int main(){
	int n,sx,w;
	string name1,name2;
	cin>>n>>sx;
	for(int i=0;i<n;i++){
		cin>>name1>>name2>>w;
		int n1=reverse(name1);
		int n2=reverse(name2);//转成数字
		we[n1]+=w;
		we[n2]+=w;
		weight[n1][n2]=w; 
	}
	for(int i=1;i<MAXV;i++){
		if(!visited[i]){
			count=0;
			tot=0;
			tot1++;
			max1=we[i];
			head=i;
			int head=DFS(i);
			if(tot>sx&&count>2){
//				v1.push_back(head);
//				v2.push_back(count); 
				time1[IntTostring[head]]=count;
				s.insert(IntTostring[head]);
			}
		}
	}
	cout<<s.size()<<endl;
	for(auto it=s.begin();it!=s.end();it++){
		cout<<*it<<" "<<time1[*it]<<endl;
	}
	return 0;
} 

  这个代码的第三个测试点因为段错误而错误,但是始终找不到错误点,猜测和数组越界无关而和递归溢出有关

 

-----------------------------------------------------------------------------------------------

在实现字符串对数的映射时可以使用:

int reverse(string s){
	if(stringToInt[s]==0){
		stringToInt[s]=++aut;
		IntTostring[aut]=s;
		maxv=aut;
		cout<<" ---------------"<<s<<" 对应 "<<aut<<endl;
		return aut;
	}else return stringToInt[s];
}

  另外我发现在pat上能跑出来的代码。上传到牛客网上最多只能对一半  让人心慌

技术图片

 

 技术图片

 

 技术图片

 

以上是关于A1034的主要内容,如果未能解决你的问题,请参考以下文章

A1034 Head of a Gang (30分)

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板