博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#10078. 「一本通 3.2 练习 4」新年好
阅读量:4648 次
发布时间:2019-06-09

本文共 2191 字,大约阅读时间需要 7 分钟。

题目链接

思路

亲戚很少,可以每个点都算一遍单源最短路

然后dfs

错误原因

算错复杂度

#include 
#include
#include
#include
using namespace std;const int inf = 0x3f3f3f3f;const int maxm = 2e5 + 7;const int maxn = 5e4 + 7;struct edge { int v, q, nxt;} e[maxm];struct node { int x, y; node(int a, int b) { x = a, y = b; } bool operator < (const node &b) const { return y > b.y; }};int head[maxm], tot;void add_edge(int u, int v, int q) { e[++tot].v = v; e[tot].q = q; e[tot].nxt = head[u]; head[u] = tot;}int n, m;int qinqi[7];int a[10][10];int dis[6][maxn];int read() { int x = 0, f = 1; char s = getchar(); for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1; for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0'; return x * f;}void dijstra(int s) { priority_queue
q; q.push(node(qinqi[s], 0)); dis[s][qinqi[s]] = 0; while (!q.empty()) { node u = q.top(); q.pop(); if (dis[s][u.x] != u.y) continue; for (int i = head[u.x]; i; i = e[i].nxt) { int v = e[i].v; if (dis[s][v] > dis[s][u.x] + e[i].q) { dis[s][v] = dis[s][u.x] + e[i].q; q.push(node(v, dis[s][v])); } } }}int ans=inf;int vis[10];void dfs(int last,int js,int tot){ if(js==5) { ans=min(ans,tot); return; } if(tot > ans) { return; } for(int i=1;i<=5;++i) { if(!vis[i]) { vis[i]=1; dfs(i,js+1,tot+a[last][i]); vis[i]=0; } }}int main() { freopen("a.in", "r", stdin); memset(dis, inf, sizeof(dis)); n = read(), m = read(); qinqi[0] = 1; for (int i = 1; i <= 5; ++i) qinqi[i] = read(); for (int i = 1; i <= m; ++i) { int x = read(), y = read(), z = read(); add_edge(x, y, z); add_edge(y, x, z); } for (int i = 0; i <= 5; ++i) { dijstra(i); } for (int i = 0; i <= 5; ++i) { for (int j = 0; j <= 5; ++j) { a[i][j] = dis[i][qinqi[j]]; } } dfs(0,0,0); cout<

转载于:https://www.cnblogs.com/dsrdsr/p/9768355.html

你可能感兴趣的文章
React接入Sentry.js
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
Java Web项目结构
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>
读《大道至简》第六章感想
查看>>
ef linq 中判断实体中是否包含某集合
查看>>