求助,样例全对但是提交之后WA3个点TLE4个点
查看原帖
求助,样例全对但是提交之后WA3个点TLE4个点
158652
IQ勇士楼主2022/8/10 17:00

RT,这道题我用map处理下标,然后用floyd做的,代码如下:

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<string, map<string, long long> > brain;
map<string, int> book;
string u, v, words[1001];
int n, m, w, top, q;
int main()
{
	cin >> n >> m;
	for(int i = 1; i <= m; i++)
	{
		cin >> u >> v >> w;
		brain[u][v] = w;
		if(book[u] == 0)
		{
			book[u]++;
			words[++top] = u;
		}
		if(book[v] == 0)
		{
			book[v]++;
			words[++top] = v;
		}
	}
	for(int i = 1; i <= top; i++)
		for(int j = 1; j <= top; j++)
			if(i == j)
				brain[words[i]][words[j]] = 0;
			else if(brain[words[i]][words[j]] == 0)
				brain[words[i]][words[j]] = 10000000000;
	for(int k = 1; k <= top; k++)
		for(int i = 1; i <= top; i++)
			for(int j = 1; j <= top; j++)
				brain[words[i]][words[j]] = min(brain[words[i]][words[j]], brain[words[i]][words[k]] + brain[words[k]][words[j]]);
	cin >> q;
	for(int i = 1; i <= q; i++)
	{
		cin >> u >> v;
		if(brain[u][v] == 10000000000)
			cout << "Roger" << endl;
		else
			cout << brain[u][v] << endl;
	}	
	return 0;
}
2022/8/10 17:00
加载中...