比赛 防止浮躁的小练习v0.6 评测结果 ATAAAAAAAT
题目名称 牧场旅行 最终得分 80
用户昵称 Lethur 运行时间 2.922 s
代码语言 C++ 内存使用 4.14 MiB
提交时间 2016-10-20 17:05:54
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<iostream>
#define MAXN 1001
#define INF 0x3f3f3f3f
#define COGS 
using namespace std;
int map[MAXN][MAXN]={0};
int n,q;
template<typename T>inline T read(T &x)
{
	int f=1;
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar())
	if(ch=='-')
	f=-1;
	for(x=0;isdigit(ch);ch=getchar())
	x=10*x+ch-'0';
	return x*=f;
}
template<typename T>inline void write(T x)
{
	if(x==0)
	{
		putchar('0');
		return ;
	}
	if(x<0)
	{
		putchar('-');
		x=-x;
	}
	int top=0;
	static char s[20];
	for(;x;x/=10)
	{
		s[++top]=x%10+'0';
	}
	while(top)
	{
		putchar(s[top--]);
	}
	return ;
}
inline void Init()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i==j)
			map[i][j]=0;
			else
			map[i][j]=INF;
		}
	}
	return ;
}
inline void Add(int u,int v,int w)
{
	map[u][v]=w;
	return ;
}
inline void Floyed()
{
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(map[i][j]>map[i][k]+map[k][j])
				{
					map[i][j]=map[i][k]+map[k][j];
				}
			}
		}
	}
	return ;
}
inline void Query(int u,int v)
{
	write(map[u][v]);
	putchar('\n');
	return ;
}
inline void work()
{
	read(n);
	read(q);
	Init();
	for(int i=1;i<n;i++)
	{
		int t1,t2,t3;
		read(t1);
		read(t2);
		read(t3);
		Add(t1,t2,t3);
		Add(t2,t1,t3);
	}
	Floyed();
	for(int i=1;i<=q;i++)
	{
		int q1,q2;
		read(q1);
		read(q2);
		Query(q1,q2);
	}
	return ;
}
int main()
{
	ios::sync_with_stdio(false);
	#ifdef COGS
		freopen("pwalk.in","r",stdin);
		freopen("pwalk.out","w",stdout);
	#endif
	work();
	return 0;
}