CF 444A(DZY Loves Physics-诱导子图的密度)
来源:互联网 发布:易语言远控源码2016 编辑:程序博客网 时间:2024/05/21 11:28
DZY loves Physics, and he enjoys calculating density.
Almost everything has density, even a graph. We define the density of a non-directed graph (nodes and edges of the graph have some values) as follows:
Once DZY got a graph G, now he wants to find a connected induced subgraph G' of the graph, such that the density of G' is as large as possible.
An induced subgraph G'(V', E') of a graph G(V, E) is a graph that satisfies:
- ;
- edge if and only if , and edge ;
- the value of an edge in G' is the same as the value of the corresponding edge in G, so as the value of a node.
Help DZY to find the induced subgraph with maximum density. Note that the induced subgraph you choose must be connected.
The first line contains two space-separated integers n (1 ≤ n ≤ 500), . Integer n represents the number of nodes of the graph G, m represents the number of edges.
The second line contains n space-separated integers xi (1 ≤ xi ≤ 106), where xi represents the value of the i-th node. Consider the graph nodes are numbered from 1 to n.
Each of the next m lines contains three space-separated integers ai, bi, ci (1 ≤ ai < bi ≤ n; 1 ≤ ci ≤ 103), denoting an edge between node ai and bi with value ci. The graph won't contain multiple edges.
Output a real number denoting the answer, with an absolute or relative error of at most 10 - 9.
1 01
0.000000000000000
2 11 21 2 1
3.000000000000000
5 613 56 73 98 171 2 561 3 291 4 422 3 952 4 883 4 63
2.965517241379311
In the first sample, you can only choose an empty subgraph, or the subgraph containing only node 1.
In the second sample, choosing the whole graph is optimal.
证明:必然存在一条边数≤1的最优解
假设存在最优解(G)ans最小边数>1,则点数>2
ans=∑vi/∑c
由假设知对G的子图,(u+v)/c<ans ,(u+v)<ans*c
∴∑u+∑v<ans*∑c ,(∑u+∑v)/∑c<ans=∑vi/∑c
∴(∑u+∑v)<∑vi 矛盾
结论成立
所以只要判断所有的只取1条边,和不取的情况 O(m)
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=pre[x];p;p=next[p])#define Lson (x<<1)#define Rson ((x<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (100000007)#define MAXN (500+10)#define MAXM (MAXN*MAXN)#define MAXAi (1e6)#define MAXCi (1e3)long long mul(long long a,long long b){return (a*b)%F;}long long add(long long a,long long b){return (a+b)%F;}long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}typedef long long ll;typedef long double ld;int n,m,a[MAXN];ld ans=0.0;int main(){//freopen("Physics.in","r",stdin);scanf("%d%d",&n,&m);For(i,n) scanf("%d",&a[i]);For(i,m){int u,v;double c;scanf("%d%d%lf",&u,&v,&c);ans=max(ans,(ld)(a[u]+a[v])/c);}cout<<setiosflags(ios::fixed)<<setprecision(100)<<ans;return 0;}
- CF 444A(DZY Loves Physics-诱导子图的密度)
- codeforces 444 A. DZY Loves Physics (图的最小密度)
- 【CodeForces】444A - DZY Loves Physics(图论规律)
- Codeforces 444A. DZY Loves Physics
- Codeforces 444A DZY Loves Physics(图论)
- Codeforces 444A DZY Loves Physics
- CodeForces 444A DZY Loves Physics
- Codeforces 444A DZY Loves Physics
- 【Codeforces 444A DZY Loves Physics】
- Codeforces 444A DZY Loves Physics(贪心,数学)
- CodeForces 444A DZY Loves Physics(结论题)
- A. DZY Loves Chessboard (CF)
- CF A. DZY Loves Hash
- CodeForces 444C. DZY Loves Physics
- codeforces - 444c DZY Loves Physics【水】
- cf444A DZY Loves Physics
- dzy loves physics
- CF 445A DZY Loves Chessboard
- 文本分类的数据预处理相关知识介绍
- poj 2677: 肿瘤检测
- 2013通化邀请赛C题D-City(并查集)
- Qt学习(二) 创建对话框,添加按钮
- 给右键菜单添加“用记事本打开”
- CF 444A(DZY Loves Physics-诱导子图的密度)
- poj 4087: 数据筛选
- 多重继承
- 三态门
- 第一个只出现一次的字符
- Android I2c-tools
- poj1852Ants
- Java词频统计算法(使用单词树)
- Office 的问题及解决