洛谷3387

 #include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=,maxm=;
int ans,n,m,etot,tot,top,color,last[maxn],w[maxn],f[maxn],val[maxn],dfn[maxn],low[maxn],col[maxn],st[maxn];
struct edge{int pre,to;}e[maxm];
struct rec{int x,y;}a[maxm];
void read(int &k){
k=; int f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
k*=f;
}
int max(int a,int b){if (a>b) return a; return b;}
int min(int a,int b){if (a<b) return a; return b;}
void add(int x,int y){e[++etot]=(edge){last[x],y}; last[x]=etot;}
void tarjan(int x){
dfn[x]=low[x]=++tot; st[++top]=x;
for (int i=last[x],to;i;i=e[i].pre)
if (!dfn[to=e[i].to]) tarjan(to),low[x]=min(low[x],low[to]);
else if (!col[to]) low[x]=min(low[x],dfn[to]);
if (dfn[x]==low[x])
for(color++;st[top+]!=x;top--) col[st[top]]=color,val[color]+=w[st[top]];
}
void dfs(int x){
if (f[x]) return; f[x]=val[x]; int tmp=;
for (int i=last[x],to;i;i=e[i].pre) dfs(to=e[i].to),tmp=max(tmp,f[to]);
f[x]+=tmp;
}
int main(){
read(n); read(m);
for (int i=;i<=n;i++) read(w[i]);
for (int i=;i<=m;i++) read(a[i].x),read(a[i].y),add(a[i].x,a[i].y);
for (int i=;i<=n;i++) if (!dfn[i]) tarjan(i);
etot=; memset(last,,sizeof(last));
for (int i=,x,y;i<=m;i++) if(col[x=a[i].x]!=col[y=a[i].y]) add(col[x],col[y]);
for (int i=;i<=color;i++) dfs(i),ans=max(ans,f[i]);
return printf("%d\n",ans),;
}

最新文章

  1. mybatis配置-返回date类型丢失时间
  2. 古典问题rabbit
  3. 前端见微知著JavaScript基础篇:this or that ?
  4. Meta标签实现阻止移动设备(手机、Pad)的浏览器双击放大网页
  5. list 和 str
  6. Java transient关键字序列化时使用小记
  7. JavaWeb学习记录(六)——用户登录功能
  8. 黄聪:C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)
  9. ORA-01810格式代码出现两次 的解决方案
  10. phonegap安卓环境下使用BarcodeScanner插件扫描二维码教程
  11. js判断undefined类型,undefined,null,NaN的区别
  12. iOS页面间传值的六种方式
  13. js中的sort方法
  14. linux下各种解压方法
  15. es6编程建议和技巧点汇总
  16. ABP使用Miniprofiler监测EF
  17. python之装饰器函数
  18. 20180318 一个VS2015运行DataTable问题
  19. 【转】每天一个linux命令(45):free 命令
  20. Hbase和传统数据库的区别

热门文章

  1. Bing Maps进阶系列一:初识Bing Maps地图服务
  2. XAML实例教程系列 - 依赖属性和附加属性(四)
  3. SQL service 自动解决依赖包 验证
  4. 55. GridPanel中getSelectionModel详解
  5. Vue.prototype的用法
  6. [Swift通天遁地]九、拔剑吧-(3)创建多种自定义Segment分段样式的控件
  7. 汇编程序45:检测点13.2 (loop指令的中断例程)
  8. mysql视图的操作
  9. Algebrizer
  10. DAO模式详解