社区讨论

玄关!谁能告诉我为啥MLE啊!

P1078[NOIP 2012 普及组] 文化之旅(疑似错题)参与者 3已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lpcintuj
此快照首次捕获于
2023/11/24 19:05
2 年前
此快照最后确认于
2023/11/24 20:53
2 年前
查看原帖
本人的傻逼代码
CPP
#include<bits/stdc++.h>
using namespace std;
int n, k, m, s, t, w[101], cn, h[101], ans = 1e9;
bool f[101][101], ok, vis[101];
struct Egde{int to, nxt, dis;}e[10001];
void add (int from, int to, int dis)
{
	e[++ cn].nxt = h[from];
	e[cn].to = to;
	e[cn].dis = dis;
	h[from] = cn;
}
void dfs (int d, int cnt)
{
	if (d == t)
	{
		ok = 1;
		ans = min (ans, cnt);
		return;
	}
	vis[d] = 1;
	for (int i = h[d]; i != 0; i = e[i].nxt)if (! f[w[e[i].to]][w[d]] && ! vis[w[e[i].to]])dfs (e[i].to, cnt + e[i].dis);
	vis[d] = 0;
}
signed main()
{
	scanf ("%d %d %d %d %d", &n, &k, &m, &s, &t);
	for (int i = 1; i <= n; ++ i)scanf ("%d", &w[i]);
	for (int i = 1; i <= k; ++ i)for (int j = 1; j <= k; ++ j)scanf ("%d", &f[i][j]);
	for (int i = 0; i < m; ++ i)
	{
		int u, v, d;
		scanf ("%d %d %d", &u, &v, &d);
		add (u, v, d);
		add (v, u, d);
	}
	dfs (s, 0);
	printf ("%d", ok ? ans : -1);
	return 0;
}
为神马会MLE

回复

6 条回复,欢迎继续交流。

正在加载回复...