蒟蒻刚学 OI,WA #2 求调
查看原帖
蒟蒻刚学 OI,WA #2 求调
1657369
__liujy楼主2025/7/26 22:29
#include<bits/stdc++.h>
const int MAXN=5e3+5;
const int INF=0x3f3f3f3f;
typedef std::pair<int,int> PII;
int T,n,m,dis[MAXN],cnt[MAXN];
bool vis[MAXN];
std::vector<PII> e[MAXN];
inline bool spfa(int s)
{
    for(int i=0;i<=n+1;i++)
        vis[i]=0,
        cnt[i]=0,
        dis[i]=INF;
    dis[s]=0,vis[s]=1;
    std::queue<int> q;
    q.push(s);
    while(q.size())
    {
        int u=q.front();
        q.pop();
        vis[u]=0;
        for(auto it:e[u])
        {
            int v=it.first,w=it.second;
            if(dis[v]>dis[u]+w)
            {
                dis[v]=dis[u]+w;
                if(!vis[v])
                {
                    vis[v]=1;
                    if(++cnt[v]==n+1) return 0;
                    q.push(v);
                }
            }
        }
    }
    return 1;
}
inline void solve()
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<=n+1;i++) e[i].clear();
    for(int i=0;i<=n;i++)
        e[n+1].push_back(std::make_pair(i,0));
    for(int _=1,u,v,w;_<=m;_++)
    {
        scanf("%d%d%d",&u,&v,&w);
        e[u-1].push_back(std::make_pair(v,w)),
        e[v].push_back(std::make_pair(u-1,-w));
    }
    if(!spfa(n+1)) printf("false\n");
    else printf("true\n");
}
int main()
{
    scanf("%d",&T);
    while(T--) solve();
    return 0;
}

回复请 at 我。

2025/7/26 22:29
加载中...