20pts 求助!!!
查看原帖
20pts 求助!!!
964091
封禁用户楼主2024/8/14 12:14
#include <iostream>
#include <queue>
#include <cstring>
#include <ctime>
#define int long long
using namespace std;
struct d
{
	int aa,bb;
}w;
queue<d>q;
vector<int>vv[100005],vv2[100005];
int n,m,s,u,v,mu[100005],em[100005],h,t,r,cnt,pp;
signed main()
{
    cin >> t;
    while(t --)
    {
    	int clo = clock();
        cin >> n >> m;
        s = 1,r = 0,cnt = 0,pp = 0;
        while(!q.empty())q.pop();
        q.push({s,0});
        for(int i = 1;i <= m;i ++)
        {
            scanf("%lld%lld%lld",&u,&v,&h);
            vv[u].push_back(v);vv2[u].push_back(h);
            if(h >= 0)vv[v].push_back(u);vv2[v].push_back(h),pp ++;
        }
        memset(em,0x3f,sizeof(em));
        memset(mu,0,sizeof(mu));
        em[s] = 0,mu[s] = 1;
        while(!q.empty())
        {
            w = q.front();
            q.pop();
            if(clock() - clo > 2000)
            {
                cout << "YES\n";
                r = 1;
                break ;
            }
            mu[w.aa] = 0;
            for(int i = 0;i < vv[w.aa].size();i ++)
                if(em[vv[w.aa][i]] > em[w.aa] + vv2[w.aa][i] && !mu[vv[w.aa][i]])
                {
                    mu[vv[w.aa][i]] = 1;
                    em[vv[w.aa][i]] = em[w.aa] + vv2[w.aa][i];
                    q.push({vv[w.aa][i],em[vv[w.aa][i]]});
                }
        }
        if(!r)cout << "NO\n";
    }
}
2024/8/14 12:14
加载中...