32tps,TLE,求调!!!
查看原帖
32tps,TLE,求调!!!
730192
gaomingyang101011楼主2024/7/10 16:50
#include<iostream>
#include<cstring>
using namespace std;
const long long N=1e5+5;
const long long C=1e9;
long long n,m;
struct node{
	long long u,v,o;
}a[N];
long long f[N];
void td(int i){
	if(i>m){
		bool pd=0;
		for(int j=1;j<=m;j++)
			if(min(f[a[j].u],f[a[j].v])!=a[j].o){
				pd=1;
				break;
			}
		if(pd!=0) return;
		else{
			for(int j=1;j<=n;j++) if(f[j]!=0) printf("%d ",f[j]);
			exit(0);
		}
	}
	if(f[a[i].u]==0&&f[a[i].v]==0) f[a[i].u]=a[i].o,f[a[i].v]=a[i].o,td(i+1);
	else{
		long long b;
		if(f[a[i].v]>=a[i].o){
			b=f[a[i].u];
			f[a[i].u]=a[i].o;
			td(i+1);
			f[a[i].u]=b;
		}
		if(f[a[i].u]>=a[i].o){
			b=f[a[i].v];
			f[a[i].v]=a[i].o;
			td(i+1);
			f[a[i].v]=b;
		}
		if(a[i].o>f[a[i].v]&&a[i].o>f[a[i].u]){
			f[a[i].u]=a[i].o;
			f[a[i].v]=a[i].o;
			td(i+1);
		}
	}
	
	return;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) f[i]=C;
	for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].o);
	td(1);
	return 0;
}
2024/7/10 16:50
加载中...