Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#456#80. 「NOIP2017」宝藏ryp100548ms7216kbC++141.3kb2025-04-24 13:54:072025-04-24 13:54:08

answer

#include <iostream>
#include <cstring>
#define int long long

using namespace std;

typedef pair<int, int> PII;

const int SIZE = 14, SIZE2 = 1 << SIZE, INF = 0x3f3f3f3f3f3f3f3f;

int N, M;
int D[SIZE][SIZE], G[SIZE][SIZE2];
int F[SIZE][SIZE2];

signed main()
{
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(0);

	cin >> N >> M;

	memset(D, 0x3f, sizeof D);
	for (int i = 0; i < N; i ++) D[i][i] = 0;

	while (M --)
	{
		int u, v, c;
		cin >> u >> v >> c;
		u --, v --;
		D[u][v] = D[v][u] = min(D[u][v], c);
	}

	memset(G, 0x3f, sizeof G);
	for (int i = 0; i < N; i ++)
		for (int j = 0; j < 1 << N; j ++)
			for (int k = 0; k < N; k ++)
				if (j >> k & 1)
					G[i][j] = min(G[i][j], D[i][k]);

	memset(F, 0x3f, sizeof F);
	for (int i = 0; i < N; i ++) F[0][1 << i] = 0;

	for (int i = 1; i < 1 << N; i ++)
		for (int j = i - 1 & i; j; j = j - 1 & i)
		{
			int Left = i ^ j, Cost = 0;
			for (int k = 0; k < N; k ++)
				if (j >> k & 1)
				{
					Cost += G[k][Left];
					if (Cost >= INF) break;
				}
			if (Cost >= INF) continue;
			for (int k = 1; k < N; k ++)
				F[k][i] = min(F[k][i], F[k - 1][Left] + Cost * k);
		}

	int Result = INF;
	for (int i = 0; i < N; i ++)
		Result = min(Result, F[i][(1 << N) - 1]);

	cout << Result << endl;

	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 4ms
memory: 7184kb

input:

1 0

output:

0

result:

ok "0"

Test #2:

score: 5
Accepted
time: 3ms
memory: 6820kb

input:

5 4
1 2 3
1 3 3
1 4 3
1 5 3

output:

12

result:

ok "12"

Test #3:

score: 5
Accepted
time: 3ms
memory: 6940kb

input:

8 7
1 2 3
2 3 3
3 4 3
4 5 3
5 6 3
6 7 3
7 8 3

output:

48

result:

ok "48"

Test #4:

score: 5
Accepted
time: 2ms
memory: 7008kb

input:

8 7
1 2 3
2 3 3
3 4 3
4 5 3
4 6 3
4 7 3
4 8 3

output:

30

result:

ok "30"

Test #5:

score: 5
Accepted
time: 6ms
memory: 6932kb

input:

8 20
6 8 4575
2 3 4575
5 6 4575
4 8 4575
8 1 4575
4 1 4575
3 6 4575
4 5 4575
4 5 4575
2 1 4575
7 8 4...

output:

45750

result:

ok "45750"

Test #6:

score: 5
Accepted
time: 4ms
memory: 6884kb

input:

7 79
2 1 1715
5 7 1715
4 6 1715
3 5 1715
3 4 1715
6 1 1715
1 2 1715
3 7 1715
2 1 1715
5 6 1715
4 7 1...

output:

10290

result:

ok "10290"

Test #7:

score: 5
Accepted
time: 5ms
memory: 6788kb

input:

6 26
1 5 93
4 5 93
1 2 93
6 3 93
4 6 93
1 2 93
6 1 93
6 2 93
1 4 93
3 4 93
4 3 93
6 2 93
1 4 93
5 2 ...

output:

465

result:

ok "465"

Test #8:

score: 5
Accepted
time: 0ms
memory: 7208kb

input:

7 47
5 1 808
4 3 808
5 2 808
2 7 808
2 4 808
3 1 808
5 1 808
4 2 808
5 4 808
5 6 808
3 1 808
1 2 808...

output:

4848

result:

ok "4848"

Test #9:

score: 5
Accepted
time: 1ms
memory: 7016kb

input:

5 806
5 1 4
3 5 2304
2 3 3533
5 2 4
5 1 1712
2 3 3760
4 1 144
5 2 2090
4 5 1603
1 4 862
5 3 2449
2 1...

output:

49

result:

ok "49"

Test #10:

score: 5
Accepted
time: 3ms
memory: 7136kb

input:

6 352
6 5 71
5 1 1591
2 4 106
6 2 3202
6 3 4021
2 4 132
4 2 1164
4 3 1102
2 1 2138
3 2 1755
1 3 1679...

output:

391

result:

ok "391"

Test #11:

score: 5
Accepted
time: 2ms
memory: 6948kb

input:

7 192
6 7 2992
4 1 2830
7 4 1972
2 3 4811
7 4 4400
4 3 1987
4 2 1205
5 1 1590
5 7 4824
2 6 1482
7 5 ...

output:

1037

result:

ok "1037"

Test #12:

score: 5
Accepted
time: 1ms
memory: 6792kb

input:

7 231
1 7 3862
1 6 1559
7 1 3538
2 6 2963
4 7 1170
3 7 1713
7 3 1737
6 7 409
2 5 2522
6 3 2412
2 3 2...

output:

1556

result:

ok "1556"

Test #13:

score: 5
Accepted
time: 3ms
memory: 6940kb

input:

8 196
2 7 3691
8 2 4425
5 8 4748
2 6 339
2 4 1368
1 5 55
6 3 3982
2 5 180
8 1 4436
4 8 4275
6 7 4204...

output:

649

result:

ok "649"

Test #14:

score: 5
Accepted
time: 6ms
memory: 7216kb

input:

8 324
5 7 4787
7 4 1110
3 4 4503
3 4 2527
2 7 1199
7 3 3660
5 1 982
7 2 1675
8 7 160
8 4 3790
7 5 35...

output:

630

result:

ok "630"

Test #15:

score: 5
Accepted
time: 43ms
memory: 6940kb

input:

11 793
1 6 267445
6 9 114589
11 7 356613
2 3 386762
1 3 262296
8 4 232142
7 3 60784
8 11 7827
7 5 16...

output:

78134

result:

ok "78134"

Test #16:

score: 5
Accepted
time: 46ms
memory: 6796kb

input:

11 988
8 1 298264
10 9 94456
9 1 348864
10 1 284796
11 6 203091
10 11 243084
7 1 34101
10 4 417170
4...

output:

58058

result:

ok "58058"

Test #17:

score: 5
Accepted
time: 99ms
memory: 7136kb

input:

12 110
10 8 349233
9 7 431229
3 2 23180
6 7 253401
10 7 376865
8 2 446361
4 9 474356
12 1 314737
6 1...

output:

690550

result:

ok "690550"

Test #18:

score: 5
Accepted
time: 111ms
memory: 7020kb

input:

12 294
2 3 343727
4 7 284269
10 4 146240
3 9 313885
5 6 366277
9 1 28701
7 8 329502
7 12 25620
6 1 5...

output:

190967

result:

ok "190967"

Test #19:

score: 5
Accepted
time: 101ms
memory: 7216kb

input:

12 769
11 1 269107
1 3 238993
6 11 218601
1 4 350327
8 12 23460
6 8 9637
3 7 292001
11 10 123618
6 9...

output:

76380

result:

ok "76380"

Test #20:

score: 5
Accepted
time: 105ms
memory: 7200kb

input:

12 763
11 5 332075
4 3 110459
5 11 412044
9 3 210419
11 1 53214
8 10 457467
6 3 47566
7 12 300566
9 ...

output:

123663

result:

ok "123663"