题目链接

题意

单向图,N - 1个牛去聚会,求所有牛去聚会和回家路径和的最大值

AC

  • 很骚的操作
    首先从派对的地方跑Dijkstra求出回家的最短路,然后将所有边翻转再次从聚会跑Dijkstra就是所有牛到聚会的最短路
    一共跑 2 个Dijkstra
using namespace std;
int inf = 0x3f3f3f3f;
int g[N][N];
int temp[N], dis[N];
bool vis[N];
bool vis_c[N][N];
void Dijkstra(int start, int n) {mem(dis, inf);mem(vis, false);dis[start] = 0;for (int i = 1; i <= n; ++i) {int MIN = inf, u = -1;for (int j = 1; j <= n; ++j) {if (vis[j]) continue;if (dis[j] < MIN) {MIN = dis[j];u = j;}}if (u == -1)    return;vis[u] = true;for (int j = 1; j <= n; ++j) {if (g[u][j] == inf || vis[j]) continue;if (dis[j] > dis[u] + g[u][j]) {dis[j] = dis[u] + g[u][j];}}}
}int main(){
//  freopen("in.txt", "r", stdin);int n, m, x;cin >> n >> m >> x;mem(g, inf);for (int i = 0; i < m; ++i) {int u, v, c;cin >> u >> v >> c;g[u][v] = min(g[u][v], c);}// 牛回家的最短路Dijkstra(x, n);for (int i = 1; i <= n; ++i) {temp[i] = dis[i];}// 翻转边mem(vis_c, false);for (int i = 1; i <= n; ++i) {for (int j = 1; j <= n; ++j) {if (g[i][j] != inf && vis_c[i][j] == false) {swap(g[i][j], g[j][i]);vis_c[j][i] = vis_c[i][j] = true;}}}// 牛去派对的最短Dijkstra(x, n);int ans = 0;for (int i = 1; i <= n; ++i) {temp[i] += dis[i];ans = max(ans, temp[i]);}cout << ans << endl;return 0;
}
  • 堆优化Dijkstra
    一共跑N + 1 个Dijkstra
using namespace std;
int inf = 0x3f3f3f3f;
struct ac{int v, c;
};
vector<ac> g[N];
int dis[N], temp[N];
bool vis[N];
void Dijkstra(int start, int n) {mem(dis, inf);mem(vis, false);dis[start] = 0;priority_queue<P, vector<P>, greater<P> > que;que.push(P(0, start));while (!que.empty()) {P f = que.top();int v = f.second;int c = f.first;que.pop();if (dis[v] < c || vis[v])    continue;vis[v] = true;for (int j = 0; j < g[v].size(); ++j) {ac t = g[v][j];if (vis[t.v])   continue;if (dis[t.v] > c + t.c) {dis[t.v] = c + t.c;que.push(P(dis[t.v], t.v));}}}}int main(){// freopen("in.txt", "r", stdin);int n, m, x;cin >> n >> m >> x;for (int i = 0; i < m; ++i) {int u, v, c;cin >> u >> v >> c;g[u].push_back((ac){v, c});}// 牛回家的最短路Dijkstra(x, n);for (int i = 1; i <= n; ++i) {temp[i] = dis[i];}int ans = 0;// 每个牛去聚会的最短路for (int i = 1; i <= n; ++i) {if (i == x) continue;Dijkstra(i, n);temp[i] += dis[x];ans = max(temp[i], ans);}cout << ans << endl;return 0;
}

POJ 3268 Silver Cow Party相关推荐

  1. POJ 3268 Silver Cow Party (最短路径)

    POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...

  2. [POJ](3268)Silver Cow Party ---最短路径(图)

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23762   Accepted: 1085 ...

  3. POJ - 3268 Silver Cow Party(最短路)

    题目链接:点击查看 题目大意:给出n个点以及m条单项路径和一个点x,设从x点到i的距离及从i回到x点的距离分别为d1和d2,求d1+d2的最大值(1<=i<=n) 题目分析:看到这个题的第 ...

  4. POJ 3268 Silver Cow Party--正反Dijkstra

  5. 【POJ】3268 Silver Cow Party (将有向图的边反转)

    问题链接:http://poj.org/problem?id=3268 [问题描述] One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  6. 【POJ】3268 Silver Cow Party

    题目链接:http://poj.org/problem?id=3268 题意 :有N头奶牛,M条单向路.X奶牛开party,其他奶牛要去它那里.每头奶牛去完X那里还要返回.去回都是走的最短路.现在问这 ...

  7. POJ 3268 D-Silver Cow Party

    http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  8. D - Silver Cow Party POJ - 3268

    D - Silver Cow Party POJ - 3268 dijkstra 是 O(n2),堆优化一下, O(nlogn) 对每个点跑一次 dj, 取 max(dis(x->i)+dis( ...

  9. Silver Cow Party (POJ - 3268 )

    Silver Cow Party (POJ - 3268 ) 这道题是我做的最短路专题里的一道题,但我还没做这个,结果比赛就出了,真是.......... 题目: One cow from each ...

最新文章

  1. Python之Scrapy爬虫的常用命令
  2. NIO框架之MINA详解
  3. java 数组 参数 ppt,Java自学课件-数组.ppt
  4. android 星级评论,Android自定义RatingBar(星级评分控件)
  5. python 多进程与多线程配合拷贝文件目录
  6. 跟几个程序员聊了聊他们的每月薪资收入
  7. Java 7 对ArrayList和HashMap的性能的提升
  8. MyEclipse 9.0的激活机制
  9. stm32f407 6路串口dma如何配置_stm32cubeMX学习十、扫码模块程序开发(基于正点原子STM32F407开发板)...
  10. android wheel控件滚动,android 滚动选择插件 android-wheel
  11. html字体版权,字体在网站中的版权问题
  12. linux服务网卡速率查看,linux 下查看网卡工作速率
  13. python用函数判断一个数是否为素数,python分享是否为素数 python输入并判断一个数是否为素数...
  14. Android相对布局
  15. 【C语言练习——打印正方形及其变形】
  16. ARM到底是冯诺依曼结构还是哈佛结构?
  17. 《袁老师访谈录》第九期丨陈家强教授/香港科大商学院前院长【问诊未来·院长系列:科技铺就金融创新之路】...
  18. python asyncio_python中asyncio模块
  19. 2021年上半年总结
  20. 网盘防和谐姿势①:压缩包篇

热门文章

  1. C++与java的不同点
  2. 【10】48. Rotate Image
  3. 类与类之间关系,用C#和JavaScript体现
  4. iOS开发日记4-第三方登录(ShareSDK)
  5. 在MAC下搭建JSP开发环境
  6. TrackViewState到底是干什么的
  7. 职业规划要结合用人单位需求。
  8. 负数的十进制转二进制
  9. LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表
  10. 面试题 16.18. Pattern Matching LCCI