第九个样例没过,其他都过了
查看原帖
第九个样例没过,其他都过了
835942
jntm233楼主2024/10/23 12:20
#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define no cout<<"NO\n";
#define yes cout<<"YES\n";
#define A cout<<"Alice\n";
#define B cout<<"Bob\n";
#define cll(x) cout<<(x)<<endl;
#define ccl(x) cout<<(x)<<" ";
#define range(a) (a).begin()+1,(a).end()
#define fall(a) for(auto i:(a))cout<<i<<" ";cout<<"\n";
#define homo 1145141919810
#define _max *max_element
#define _min *min_element
#define man int main()
#define whatcanisay ll t;cin>>t;while(t--)solve();
#define manbaout return 0;
#define rep(i,a,b) for(ll i=(a);i<=(b);i++)
#define lep(i,a,b) for(ll i=(a);i>=(b);i--)
#define endl "\n"
using ll=long long;
using ld=long double;
using ull=unsigned long long;
using plst=pair<ll,string>;
using pll=pair<ll,ll>;
ll n,m,k;
//ll fa[114514];
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
//const int N=214514;
const int inf=1e9;
const ll mod=998244353;
ll lcm(ll a,ll b){return a*b/gcd(a,b);}
const ull base=131;
const ll N=2e5+5;
using i64=long long;
i64 fact[N];
i64 ksm(i64 a, i64 b) {
	i64 r = 1;
	while (b > 0) {
		if (b & 1) r = (r * a) % mod;
		b /= 2;
		a = (a * a) % mod;
	}
	return r;
}
i64 C(i64 n, i64 k) {
	if (n < k) return 0LL;
	return (fact[n] * ksm((fact[n - k] * fact[k]) % mod, mod - 2)) % mod;
}
void solve(){
	ll n,m;cin>>n>>m;
	vector<pll>ve[n+1];
	priority_queue<pll>qq;
	vector<ll>dist(n+1,inf);
	vector<ll>cnt(n+1);
	rep(i,1,m){
		ll u,v,w;cin>>u>>v>>w;
		ve[u].push_back({v,w});
		if(w>=0)ve[v].push_back({u,w});
	}
	ll flag=0;
	auto dj=[&](ll x)->void{
		while(qq.size())qq.pop();
		vector<ll>vis(n+1);
		dist[x]=0;
		vis[x]=1;
		qq.push({0,x});//存距离和点的编号
		cnt[x]++;
		while(qq.size()){
			ll u=qq.top().y;
			qq.pop();
			vis[u]=0;
			for(auto s:ve[u]){//遍历u连接的所有点
				ll v=s.x,w=s.y;
				if(dist[v]>dist[u]+w){
					dist[v]=dist[u]+w;
					if(++cnt[v]>=n){
						flag=1;
						return;
					}
					if(!vis[v]){
						qq.push({-dist[v],v});
						vis[v]=1;
					}
				}
			}
		}
	};
	dj(1);
	cll(flag?"YES":"NO")
}

man{ 
	
	ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	//	fact[0] = 1;
	//	rep(i,1,N - 1) fact[i] = (fact[i - 1] * i) % mod;
	ll t;cin>>t;
	while(t--)
	solve();
}
2024/10/23 12:20
加载中...