【code force444A】DZY Loves Physics

76 篇文章 0 订阅
3 篇文章 0 订阅

DZY Loves PhysicsCrawling in process...

Crawling failedTime Limit:1000MS    Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

Description

Input

Output

Sample Input

Sample Output

Hint

Description

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:

where v is the sum of the values of the nodes, e is the sum of the values of the edges.

Once DZY got a graph G, now he wants to find a connected induced subgraphG' of the graph, such that the density of G' is as large as possible.

An induced subgraph G'(V', E') of a graphG(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 inG, 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.

Input

The first line contains two space-separated integers n (1 ≤ n ≤ 500),. Integern represents the number of nodes of the graphG, m represents the number of edges.

The second line contains n space-separated integersxi (1 ≤ xi ≤ 106), where xi represents the value of thei-th node. Consider the graph nodes are numbered from1 to n.

Each of the next m lines contains three space-separated integersai, bi, ci (1 ≤ ai < bi ≤ n; 1 ≤ ci ≤ 103), denoting an edge between node ai andbi with valueci. The graph won't contain multiple edges.

Output

Output a real number denoting the answer, with an absolute or relative error of at most10 - 9.

Sample Input

Input
1 0
1
Output
0.000000000000000
Input
2 1
1 2
1 2 1
Output
3.000000000000000
Input
5 6
13 56 73 98 17 点的权值
1 2 56    边的权值
1 3 29
1 4 42
2 3 95
2 4 88
3 4 63
Output
2.965517241379311

Sample Output

Hint

In the first sample, you can only choose an empty subgraph, or the subgraph containing only node1.

In the second sample, choosing the whole graph is optimal.

题意:找最小连通子图,使得点权和/边权值和最大

题解:应用图论中的一个结论:最多两个点时,其比值可能达到最大,所以遍历两个点的边就可以了

          2个点的情况肯定比3个点的优。

假设有3个点a,b,c,权值分别为A,B,C
现a-b,b-c边的权值分别为u,v
那么对于两点的情况有A+Bu,B+Cv
假设有(A+B)/u≥(B+C)/v
对于三点来说(A+B+C)/u+v,有(A+B)∗v≥(B+C)∗u
比较A+B/uA+B+C/u+v,两边同乘u∗(u+v),得(A+B)/(u+v)(A+B+C)/ u                                                                                                                                                                                                                u
同减(A+B)∗u(A+B)∗vC∗u
因为(A+B)∗v≥(B+C)∗u≥C∗u


(v+a)/(e+b)  <=  v/e

假设存在最优解(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 矛盾

结论成立

code:

#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
	int n,m,a,b;
	double k;
	double val[500];
	while(~scanf("%d%d",&n,&m))
	{
		for(int i=1;i<=n;i++)
		scanf("%lf",&val[i]);//点的权值
		double ans=0;
		for(int i=0;i<m;i++)
		{
			scanf("%d%d%lf",&a,&b,&k);
		    ans=max(ans,(val[a]+val[b])/k);
		 } 
		 printf("%.15lf\n",ans);
	}
	return 0;
 } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
11-27 2795

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值