社区讨论

求助11pts,自己找不出问题

P2294[HNOI2005] 狡猾的商人参与者 2已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mhjtz59r
此快照首次捕获于
2025/11/04 08:28
4 个月前
此快照最后确认于
2025/11/04 10:29
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long 
int t,n,m,x,y,z,cnt[105],dis[105],vis[105];
struct node{
    int id,x;
};
vector<node>g[105];
bool SPFA(int x){
    memset(dis,0x3f,sizeof dis);
    memset(vis,0,sizeof vis);
    memset(cnt,0,sizeof cnt);
    queue<int>q;
    q.push(x);
    dis[x]=0;
    vis[x]=1;
    while(!q.empty()){
        int t=q.front();
        q.pop();
        vis[t]=0;
        for(auto i:g[t]){
            if(dis[i.id]>dis[t]+i.x){
                dis[i.id]=dis[t]+i.x;
                cnt[i.id]=cnt[t]+1;
                if(cnt[i.id]==n) return 1;
                q.push(i.id);
                vis[i.id]=1;
            }
        }
    }
    return 0;
}
signed main(){
    cin >> t;
    while(t--){
        cin >> n >> m;
        for(int i=1;i<=n;i++)g[i].clear();
        for(int i=1;i<=m;i++){
            cin >> x >> y >> z;
            g[y].push_back({x-1,-z});
            g[x-1].push_back({y,z});
        }
        for(int i=1;i<=n;i++)g[n+1].push_back({i,0});
        if(SPFA(n+1)) cout << "false\n";
        else cout << "true\n";
    }
    return 0;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...