倒数第二个报错
查看原帖
倒数第二个报错
801678
封禁用户楼主2024/8/9 17:59
#include<bits/stdc++.h>
using namespace std;
struct node{
	int gu;
	bool k;
}a[110][110];
vector <int> q[110];
int lu[110];
bool lu1[110],lu2[110];
int tot=1,k1,ji;
void cl2(int f){
	lu1[f]=1;
	for(int i=0;i<q[f].size();i++){
		int y=q[f][i];
		if(a[f][y].k==1&&lu1[y]==0) lu[tot]=y,tot++,cl2(y);
	}
}
void cl3(int m,int n){
	lu2[m]=1;
	for(int k=0;k<q[m].size();k++){
		int y=q[m][k];
		ji+=a[y][n].gu;
		if(lu2[y]!=1)
		cl3(y,n);
	}
}
 int main(){
 	freopen("data.in","r",stdin);
	int n;
	cin>>n;
	for(int i=1;i<=100;i++){
		a[i][i].k=1;
	}
	for(int a1,b,w,i=1;i<=n;i++){
		cin>>a1>>b>>w;
		a[a1][b].gu+=w;
		if(w>50){
			a[a1][b].k=1;
			q[a1].push_back(b);
		}
	}
	for(int i=1;i<=100;i++){
		memset(lu1,0,sizeof(lu1));
		tot=1;
		memset(lu,0,sizeof(lu));
		cl2(i);
		for(int j=1;j<=tot;j++){
			a[i][lu[j]].k=1;
		}
	}
	for(int i=1;i<=100;i++){
		for(int j=1;j<=100;j++){
			if(a[i][j].k==1) continue;
			ji=a[i][j].gu;
			cl3(i,j);
			if(ji>50) a[i][j].k=1,q[i].push_back(j),a[i][j].gu=ji;
			ji=0;
			memset(lu2,0,sizeof(lu2));
		}
	}
	for(int i=1;i<=100;i++){
		for(int j=1;j<=100;j++){
			if(a[i][j].k==1&&i!=j) cout<<i<<" "<<j<<endl;
		}
	}
	return 0;
}
2024/8/9 17:59
加载中...