分析

题意说输入数据有两个规则:
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. 开发日记-20190425 关键词 gradle基础学习 7年之约 启动篇
  2. .NET仓储模式高级用例
  3. 主动触发被动模式从而挟持无线客户端 – Passive Karma Attack
  4. php中对象怎么访问i属性_PHP--序列化与反序列化详解
  5. 科大星云诗社动态20201122
  6. centos7.4安装图形界面及报错处理
  7. python程序详细描述_如何逐行描述Python代码?
  8. 天猫浏览型应用的CDN静态化架构演变(转)
  9. 服务器如何返回429状态,Instagram远程服务器返回一个错误:(429)UNKNOWN STATUS CODE...
  10. c# 整数类型转byte_C#中数据类型的整数类型
  11. LeetCode 624. 数组列表中的最大距离
  12. python3.8.2中文手册chm_3.2.2中文语法考察
  13. 实现跨域访问---同源策略 、常见跨域方法
  14. android 悬浮组件,Android 悬浮组件
  15. cad 万能字体_CAD:“你的图纸缺少shx字体!”不知道该怎么办?不存在的!
  16. Linux下创建、删除软链接
  17. Linux编译Opencv3.4.7: relocation R_X86_64_PC32 against `ff_w_ff‘ can not be used when makin with -fPIC
  18. 摄像头图像质量常用指标的测试方法
  19. 由随机数生成器到宿命论
  20. NOIWC2018滚粗记

热门文章

  1. Python 第五天
  2. 关于 block的一些浅识
  3. xml学习总结(三)
  4. ios内购二次认证服务器代码
  5. JavaScript 操作 HTML DOM (文档对象模型) 相关知识点
  6. 基于Docker搭建私有镜像仓库
  7. 重温Elasticsearch
  8. js判断函数是否存在
  9. java基础面试题整理(BAT)
  10. 继续教育统考计算机和英语难度怎么样,网络教育英语统考90分的难度怎么样