P1462 0分求救
查看原帖
P1462 0分求救
1054021
114_Hzh_AK_NOIP_514楼主2024/8/11 17:42
#include <bits/stdc++.h>
using namespace std;
struct node
{
	int s,e,v;
}u;
vector <node> mapp;
long long x[10005];
long long dis[10005];
long long n,m,b,xx;
bool flag=0;
bool cmp(int a,int b)
{
	return a<b;
}
bool ford(int s)
{
	if(x[s]<x[1]) return 0;
	memset(dis,0x3f,sizeof dis);
	dis[s]=0;
	for(int i=1;i<n;i++)
	{
		for(int j=0;j<mapp.size();j++)
		{
			int ns=mapp[j].s;
			int ne=mapp[j].e;
			int nv=mapp[j].v;
			if(dis[ns]+nv<dis[ne])
			{
				dis[ne]=dis[ns]+nv;
			}
		}
	}
	if(dis[n]<=b) return 1;
	else return 0;
}
int main()
{
	cin >> n >> m >> b;
	for(int i=1;i<=n;i++)
	{
		cin >> x[i];
		if(i==1) xx=x[i];
	}
	while(m--)
	{
		int a,b,c;
		cin >> a >> b >> c;
		u.s=a;
		u.e=b;
		u.v=c;
		mapp.push_back(u);
		u.s=b;
		u.e=a;
		u.v=c;
		mapp.push_back(u);
	}
	sort(x+1,x+n+1,cmp);
	int mid=0,l=1,r=n,ans=0;
	while(l<=r)
	{
		mid=(r-l)/2+l;
		if(ford(mid)==1)
		{
			r=mid-1;
			ans=mid;
		}
		else l=mid+1;
	}
	if(ans==0) cout << "AFK";
	else cout << ans;
	return 0;
}

2024/8/11 17:42
加载中...