题意:求一个无向图的边权平均值最小的环

思路:假设环中Σwi/t<ans 那变形一下就是Σwi<ans*t → Σ(wi-ans)< 0 这样就可以二分答案做了

#include <stdio.h>

#include <iostream>

#include<queue>

#include <string.h>

#include <algorithm>

#define maxn 90000

#define esp 0.00000001

using namespace std;

int head[maxn],point[maxn],next[maxn],value[maxn];

int now,n,m,x,y,v,inque[maxn];

double dist[maxn];

void add(int x,int y,int v)

{

next[++now]=head[x];

head[x]=now;

point[now]=y;

value[now]=v;

}

int spfa(int s,double x)

{

for(int i=1;i<=n;i++)dist[i]=0x3f3f3f3f;

memset(inque,0,sizeof(inque));

int visit[maxn]={0};

queue<int>q;

q.push(s);

visit[s]=1;

dist[s]=0;

while(!q.empty())

{

int u=q.front();

q.pop();

visit[u]=0;

for(int i=head[u];i;i=next[i])

{

int k=point[i];

if(double(dist[u]+1.0*value[i]-x)<dist[k])

{

dist[k]=(double)dist[u]+1.0*value[i]-x;

if(visit[k]==0)

{

visit[k]=1;

inque[k]++;

if(inque[k]>n)return 1;

q.push(k);

}

}

}

}

return 0;

}

int main()

{

int t,cas=1,flag=0;

scanf("%d",&t);

while(t--)

{

now=0;

memset(head,0,sizeof(head));

scanf("%d%d",&n,&m);

double l=0,r=0;

for(int i=1;i<=m;i++)

{

scanf("%d%d%d",&x,&y,&v);

add(x,y,v);

if(v>r)r=v;

}

printf("Case #%d: ",cas++);

for(int i=1;i<=n;i++)

{

add(n+1,i,0);

}

if(spfa(n+1,r+100)==0){printf("No cycle found.\n");continue;}

while(r-l>esp)

{

double mid=(l+r)/2;

if(spfa(n+1,mid)==1){r=mid;flag=1;}else l=mid;

}

//    cout<<spfa(n+1,2.5)<<endl;

printf("%.2f\n",r);

}

return 0;

}

最新文章

  1. Git分布式版本控制教程
  2. Android GZIP压缩IO流,优化APP数据传输(一)
  3. Python资源大全
  4. EL表达式显示数据取整问题
  5. git diff
  6. PHP函数库(other)
  7. How to use JDBC-Authentication of Spring Boot/Spring Security with Flyway
  8. Beaglebone Black - 控制 BBB 板上的 LED 灯
  9. Python 新手常犯错误(第二部分)
  10. JQuery(一) 入门
  11. 进程控制之更改用户ID和组ID
  12. golang中channel的超时处理
  13. shell 中 2&gt;&amp;1 的使用
  14. memcache memcached 区别
  15. spring学习总结(mybatis,事务,测试JUnit4,日志log4j&amp;slf4j,定时任务quartz&amp;spring-task,jetty,Restful-jersey等)
  16. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
  17. TypeScript入门 2--代码调试
  18. Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
  19. SpringMVC mock测试详解
  20. MIUI12系统怎么样开启Root超级权限的流程

热门文章

  1. PowerShell~执行策略的介绍
  2. input标签属性
  3. img 标签访问图片返回403forbidden
  4. AJPFX总结I/O流操作(二)
  5. Ajax深入理解
  6. CCF|学生排队|Java
  7. Knockout-了解Observable与computed
  8. 微信小程序开发系列五:微信小程序中如何响应用户输入事件
  9. 在云环境上使用SLF4J对Java程序进行日志记录
  10. 怎么用eclipse生成jar文件?eclipse导出jar介绍