【求助】多组数据TLE了qwq
  • 板块灌水区
  • 楼主L_S_C
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/11/6 00:01
  • 上次更新2023/11/4 01:19:56
查看原帖
【求助】多组数据TLE了qwq
187850
L_S_C楼主2021/11/6 00:01

取值范围:n<=10n<=10

qwqqwq

#include<bits/stdc++.h>
#define ll long long
#define Il inline
#define Re register
#define mem(u,v) memset(u,v,sizeof(u))
#define rep(i,a,b) for(Re ll i=(a);i<=(b);i++)
#define drep(i,a,b) for(Re ll i=(a);i>=(b);i--)
#define go(u) for(ll i=head[u],v=e[i].to;i;i=e[i].pre,v=e[i].to)
#define _go(u) for(ll i=Head[u],v=E[i].to;i;i=E[i].nxt,v=E[i].to)
#define writesp(x) write(x),putchar(' ')
#define writeln(x) write(x),puts("")
using namespace std;
Il ll read(){ll sum=0,f=0;char ch=getchar();for(;!isdigit(ch);ch=getchar())f|=(ch=='-');for(;isdigit(ch);ch=getchar())sum=((sum<<1)+(sum<<3)+(ch^48));return f?-sum:sum;}
void write(const ll x){if(x<0){putchar('-');write(-x);return;}if(x>9)write(x/10);putchar(x%10+'0');}
char getc(){char ch=getchar();for(;!isalpha(ch);ch=getchar());return ch;}
#define N 1000010
ll n, m, head[100], tot, ans = 1e18;
struct edge{
	ll pre, to, val;
}e[N];
void add(ll x, ll y, ll v){
	e[++tot].pre = head[x];
	e[tot].to = y;
	e[tot].val = v;
	head[x] = tot;
}
ll dfs(ll now, ll dep){
	if(now + 1 == (1 << n))return 0;
	ll sum = 1e18;
	go(dep){
//		cout << now <<' '<< (1 << (v - 1))<<' ' << (now & (1 << (v - 1)))<<' ' << (now | (1 << (v - 1)))<<'\n';
		if((now & (1 << (v - 1))) == 0){
			sum = min(ans, dfs(now | (1 << (v - 1)), v) + e[i].val);
		}
	}
	return sum;
}
int main(){
	while(~scanf("%d %d", &n, &m)){
		ans = 1e18;tot = 0;
		memset(head, 0, sizeof(head));
//		n = read(), m = read();
		ll x, y, v;
		rep(i, 1, m){
			x = read();
			y = read();
			v = read();
			add(x, y, v);
			add(y, x, v);
		}
		rep(i, 1, n){
			ans = min(ans, dfs(1 << (i - 1), i));
		}
		if(ans == 1e18){
			puts("-1");
			continue;
		}
		writeln(ans);
	}
}
2021/11/6 00:01
加载中...