比赛 9.27练习赛 评测结果 AWWTTTTTTEEE
题目名称 观光 最终得分 8
用户昵称 会挽弯弓满月 运行时间 19.130 s
代码语言 C++ 内存使用 3.67 MiB
提交时间 2024-09-27 20:07:04
显示代码纯文本
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll read()
{
	ll x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return f*x;
}
ll T;
ll n,m,a,b,l,s,f,t;
ll load[10010];
struct lu
{
	ll to;
	ll v;
};
vector<lu> mm[10010];
bool vis[10010];
ll min1,min2;
void dfs(ll p,ll k)
{
	if(vis[p]) return ;
	if(p==f)
	{
		load[++t]=k;
		if(k<min1) min1=k;
		else if(k>min1&&k<min2) min2=k;
		return ;
	}
	for(ll i=0;i<mm[p].size();i++)
	{
		vis[p]=1;
		dfs(mm[p][i].to,k+mm[p][i].v);
		vis[p]=0;
	}
}
int main() 
{
	freopen("sightseeing.in","r",stdin);
	freopen("sightseeing.out","w",stdout);
	T=read();
	while(T--)
	{
		min1=0x7fffffff;
		min2=0x7fffffff;
		n=read();m=read();
		memset(load,0,sizeof(load));
		memset(vis,0,sizeof(vis));
		for(ll i=1;i<=m;i++)
		{
			for(ll j=0;j<mm[i].size();i++)
			{
				mm[i][j].to=0;
				mm[i][j].v=0;
			}
		}
		t=0;
		for(ll i=1;i<=m;i++)
		{
			a=read();b=read();l=read();
			mm[a].push_back((lu){b,l});
		}
		s=read();f=read();
		dfs(s,0);
		ll ans=0;
		for(ll i=1;i<=t;i++)
		{
			if(load[i]==min1||load[i]==min2) ans++;
		}
		printf("%lld\n",ans);
	}
	return 0;
}