样例可过,WA,11分求助(悬赏一个关注)
查看原帖
样例可过,WA,11分求助(悬赏一个关注)
800499
suzhikz楼主2023/5/21 15:33
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string.h>
#include<deque>
#include<stack>
#include<queue>
#include<vector>
#include<map>
using namespace std;
int w;
int n,m;
int dis[1005];
bool vi[1005];
int main(){
	cin>>w;
	while(w--){
		cin>>n>>m;
		vector<int>g[1005],w[1005];
		int in[1005]={0};
		for(int i=1;i<=n;i++){
			dis[i]=-9999999;
			in[i]=0;
			vi[i]=0;
		}
		for(int x,y,z,i=1;i<=m;i++){
			cin>>x>>y>>z;
			g[x-1].push_back(y);
			w[x-1].push_back(z);
			g[y].push_back(x-1);
			w[y].push_back(-z);
		}
		bool co=0;
		queue<int> q;
		for(int i=0;i<=n;i++){
			if(!in[i]){
				q.push(i);
				memset(dis,-0x3f,sizeof(dis));
				dis[i]=0;
				vi[i]=1;
			}
			while(!q.empty()){
				int x=q.front();
				vi[x]=0;
				q.pop();
				for(int i=0;i<g[x].size();i++){
					if(dis[g[x][i]]<dis[x]+w[x][i]){
						dis[g[x][i]]=dis[x]+w[x][i];
						if(!vi[g[x][i]]){
							q.push(g[x][i]);
							in[g[x][i]]++;
							vi[g[x][i]]=1;
							if(in[g[x][i]]>n){
								co=1;cout<<"false"<<endl;
								break;
							} 
						}
					}
				}
				if(co)break;
			}
		}
		if(!co) cout<<"true"<<endl;
		
		
	}
	return 0;
}

2023/5/21 15:33
加载中...