codeforces 615B
来源:互联网 发布:淘宝 主板 编辑:程序博客网 时间:2024/05/16 09:07
题意:给出n个点是m条无向边,假设一条链长度是p,且这条链上的点是严格递增的,链的末端端点为u,求出最大的degree[u]*p
思路:dp[i]代表以i结尾的链的最大长度(不包括i本身),那么我们对点输入的时候辩证一下顺序,然后对起点进行排序,最后答案就是(dp[i]+1)*degree[i]
#include<algorithm>#include<cstdio>#include<iostream>#include<cmath>#include<cstring>using namespace std;typedef long long ll;const int qq = 200000+10;int dp[qq/2];int degree[qq/2];struct Edge{int u,v;bool operator < (const Edge &a)const{if(a.u==u)return v<a.v;return u<a.u;}}edge[qq];int main(){int n,m;scanf("%d%d",&n,&m);memset(degree, 0, sizeof(degree));for(int i=0; i<m; ++i){scanf("%d%d",&edge[i].u,&edge[i].v);degree[edge[i].u]++,degree[edge[i].v]++;if(edge[i].u>edge[i].v)swap(edge[i].u, edge[i].v);}sort(edge, edge+m);memset(dp, 0, sizeof(dp));for(int i=0; i<m; ++i){int u=edge[i].u,v=edge[i].v;dp[v]=max(dp[v], dp[u]+1);}ll res=0;for(int i=1; i<=n; ++i)res=max(res, (ll)(dp[i]+1)*degree[i]);printf("%lld\n", res);return 0;}
0 0
- codeforces 615B
- CodeForces 615B Longtail Hedgehog
- codeforces 615B Longtail Hedgehog
- CodeForces 615B Longtail Hedgehog
- codeforces 615B Longtail Hedgehog
- codeforces B
- codeforces B
- codeforces B
- codeforces B
- Codeforces 615B Longtail Hedgehog 【dp】
- [CodeForces 615B]Longtail Hedgehog[DP]
- Codeforces 615B Longtail Hedgehog 【dp】
- CodeForces 615 B. Longtail Hedgehog(dp)
- CodeForces 615B Longtail Hedgehog(dp)
- Codeforces 615B Longtail Hedgehog【dp】
- [CodeForces 615B] Longtail Hedgehog [DP]
- CodeForces 615B Longtail Hedgehog 递推
- Codeforces 615B - Longtail Hedgehog(DP)
- Delphi 的消息机制
- 【IDE-Visual Studio】灾难性故障(异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))
- UVa 565 - Pizza Anyone?
- Words 2016.9.5
- module_platform_driver(), module_i2c_driver
- codeforces 615B
- (*(void (*) ()) 0) ();
- android系统架构
- composer安装yii2,及报错
- 平衡二叉树
- 修改系统字体文件
- usb启动盘提示vesamenu.c32 not a COM32R image
- mysql group by 组内排序
- windows系统信息获取 注册表