本地AC(包括下载数据),你谷全RE,疯了
查看原帖
本地AC(包括下载数据),你谷全RE,疯了
602161
ET_theStarSky楼主2023/1/2 18:19
#include <bits/stdc++.h>
#include <vector>
using namespace std;
struct road
{
    int to;
    int length;
};
vector<road> roads[2000];
int n,m;
int fresh()
{

    for(int i=0; i<=2000; i++)
    {
        roads[i].clear();
        //roads[i]=new vector<road>;
    }
}
int init()
{
    cin>>n>>m;
    fresh();
    for(int i=0; i<m; i++)
    {
        int i1,i2,l;
        cin>>i1>>i2>>l;

        i1--;
        i2--;
        //cout<<i1<<' '<<i2<<' '<<l<<endl;
        if(l>=0)
        {
            roads[i1].push_back(road({i2,l}));
            roads[i2].push_back(road({i1,l}));
        }
        else
        {
            roads[i1].push_back(road({i2,l}));
        }
    }
}
int check()
{
    int q[100000]= {0};
    int e=0;
    int cnt=0;
    int dis[2000]= {0};
    int times[2000]= {0};
    for(int i=0; i<2000; i++)
    {
        dis[i]=i?INT_MAX:0;
    }
    q[e++]=0;
    while(cnt!=e)
    {
        int j=q[cnt++];
        //cout<<j<<endl;
        vector<road>::iterator it;
        for(it=roads[j].begin(); it!=roads[j].end(); it++)
        {
            road r=*it;
            int da=r.length+dis[j];
            if(da<dis[r.to])
            {
                dis[r.to]=da;
                q[e++]=r.to;
                times[r.to]++;
                //cout<<j<<' '<<r.to<<' '<<dis[r.to]<<endl;
                if(times[r.to]==n)
                {
                    cout<<"YES\n";
                    return 0;
                }
            }
        }
    }
    cout<<"NO\n";
    return 0;
}
int main()
{
    int T;
    cin>>T;
    for(int i=0; i<T; i++)
    {
        init();
        check();
    }
}
2023/1/2 18:19
加载中...