分析

题意说输入数据有两个规则:
1 每个i只有一个pi表示i站的目的地 i可以等于pi
2 每个pi都指向唯一的一个站i
那么也就是说i指向的目的只有一个且唯一 每个目的由唯一的始发站出来 所以也就是说 图中的每一个点只有一条单向边 那么当我们求最大的数量的可达对时 也就是尽可能构造大圈 所以每一个点 要么形成自回路 要么在一个多点圈中 而连接任意两个圈的花费就是修改两站的目的地 所以 把两个圈构造成一个大圈的花费就是2
所以这道题可以任选两个最大的圈 连成一个 那么最多的点对 就是这个圈中的点数的平方

题意归纳出来就是尽可能构造大的圈,注意数据有可能会超int

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100010;
struct node{int id,val;node(int a,int b):id(a),val(b){}
};
bool cmp(node a,node b){return a.val>b.val;
}
vector<node>ans;
int k,nex[maxn];
bool bok[maxn];
void dfs(int s){if(!bok[s]){bok[s]=1;k++;dfs(nex[s]);}
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&nex[i]);}for(int i=1;i<=n;i++){if(!bok[i]){k=0;dfs(i);ans.push_back(node(i,k));}}sort(ans.begin(),ans.end(),cmp);ll sum=0,add=0;bool f=0;if(ans.size()>=2){for(int i=0;i<ans.size();i++){if(i<2){add+=ans[i].val;    }else {sum+=1LL*ans[i].val*ans[i].val;//防止溢出}}   sum+=1LL*add*add;//防止溢出}else{sum = 1LL*n*n;}printf("%lld\n",sum);return 0;
}

WA在爆int…

codeforce 884C - Bertown Subway DFS+图论相关推荐

  1. codeforce Pashmak and Buses(dfs枚举)

    1 /* 2 题意:n个同学,k个车, 取旅游d天! 3 要求所有的学生没有两个或者两个以上的在同一辆车上共同带d天! 输出可行的方案! 4 5 对于d行n列的矩阵,第i行第j列表示的是第i天第j个同 ...

  2. N - Wires(dfs 图论 离散化)

    题目链接:https://codeforces.com/contest/1250/problem/N 题意:给定一个图,点从1到1e9,边有2e5,修改一些边,使得最后所有边都在同一集合 题解:由于点 ...

  3. 【题解】CodeForce 1060E-Sergey and Subway(树形DP)

    题意:给你n个顶点的一棵树,距离为3的两个点之间连一条新的边(原边留下),问所有点对的距离之和. 题解:考虑两个问题, 第一,如果两个点之间的距离是偶数的话,那么连新边之后的距离就变成了原来就距离/2 ...

  4. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

  5. 图论入门六:哥尼斯堡七桥问题

    转载自https://blog.csdn.net/saltriver/article/details/54585595 哥尼斯堡七桥问题: 1736年,年仅29岁的数学家欧拉来到普鲁士的古城哥尼斯堡( ...

  6. 图论入门一:图的基本概念

    前言: 图(graph)并不是指图形图像(image)或地图(map).通常来说,我们会把图视为一种由"顶点"组成的抽象网络,网络中的各顶点可以通过"边"实现彼 ...

  7. 图论算法(5):图的广度优先遍历 BFS

    本章节内容使用 java 实现,Github 代码仓:https://github.com/ZhekaiLi/Code/tree/main/Graph/src 查看文章内的图片可能需要科学上网! 因为 ...

  8. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

  9. 微软过桥问题Dijkstra/倒水问题

    微软过桥问题 微软的过桥问题:4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟.2分钟.5分钟.10分钟,试问最少需要多长时间4 ...

最新文章

  1. android 显示 PDF 文件
  2. Windows 7/8.1 仍可免费升级至 Windows 10
  3. 计算机教育的进制转换,计算机数制及编码进制转换公开课教学教育资料.doc
  4. 云网络十年:探路者阿里云的理想和坚持
  5. getprocaddress得到为0_基于ZU+系列MPSoC芯片的USB3.0/2.0接口硬件设计
  6. chrome书签搜索
  7. 三组计算机局域网组网方案,多种方式组建家庭局域网
  8. ASO|几个ASO优化方案解析(下)
  9. Centos7授权普通用户管理员权限
  10. 记录ESP32 出现未定义vTaskGetRunTimeStats的奔溃时刻!
  11. 世界时间查询服务器(一)
  12. [渝粤教育] 西南科技大学 物流系统规划与设计 在线考试复习资料
  13. 复利计算器app发布
  14. 组合导航初始对准(1)
  15. Android加密之全盘加密(FDE)
  16. 守护线程(Daemon)、钩子线程(Hook)简述
  17. 田野调查手记·浮山篇(六)
  18. 【SAP消息号CK322】
  19. hawe平衡阀LHK40F-11CPV-350
  20. 计算机网络员考试试题及答案,2013年软考网络管理员考前测试题及答案(10)

热门文章

  1. 状态目标bfs+哈希表 + 三杯水
  2. “四方定理”--蓝桥杯
  3. rails table html,Ruby on Rails:如何将字符串呈现为HTML?
  4. centos mysql 允许远程访问
  5. C# Repeater绑定显示数组
  6. php 自定义行间距,phpstorm 常见设置
  7. ajax上传文件到servlet
  8. 社团管理信息系统C语言,学生社团信息管理系统.doc
  9. 中职 计算机老师 教cad,教师博客应用于职校计算机CAD教学探究.doc
  10. 【C语言进阶深度学习记录】二十七 C语言中字符串的相等比较