博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1827
阅读量:5246 次
发布时间:2019-06-14

本文共 1687 字,大约阅读时间需要 5 分钟。

Tarjan缩点后求入度为0的点,即是要求最少电话。

#include 
#include
#include
#include
using namespace std;int cst[1010];struct Edge{ int u,v; int next;}edge[2010];int head[1010],dfn[1010],low[1010],stack[1010],st;bool instack[1010];int tot,nTime,ans,btn;int n,m;int belong[1010],label[1010];int edsave[2010][2];int degree[1010];void addedge(int u,int v){ edge[tot].u=u; edge[tot].v=v; edge[tot].next=head[u]; head[u]=tot++;}void tarjan(int u,int ufa){ dfn[u]=low[u]=++nTime; stack[++st]=u; instack[u]=true; for(int e=head[u];e!=-1;e=edge[e].next){ int v=edge[e].v; if(dfn[v]==-1){ tarjan(v,u); low[u]=min(low[u],low[v]); } else if(instack[v]){ low[u]=min(low[u],dfn[v]); } } if(dfn[u]==low[u]){ int v; int mincst=(1<<30)-1; btn++; do{ v=stack[st--]; instack[v]=false; belong[v]=btn; mincst=min(mincst,cst[v]); }while(u!=v); label[btn]=mincst; }}int main(){ int u,v; while(scanf("%d%d",&n,&m)!=EOF){ memset(head,-1,sizeof(head)); memset(dfn,-1,sizeof(dfn)); memset(low,-1,sizeof(low)); memset(instack,false,sizeof(instack)); memset(degree,0,sizeof(degree)); st=tot=nTime=ans=btn=0; for(int i=1;i<=n;i++) scanf("%d",&cst[i]); for(int i=1;i<=m;i++){ scanf("%d%d",&u,&v); edsave[i][0]=u; edsave[i][1]=v; addedge(u,v); } for(int i=1;i<=n;i++){ if(dfn[i]==-1){ tarjan(i,0); } } for(int i=1;i<=m;i++){ if(belong[edsave[i][0]]==belong[edsave[i][1]]) continue; else degree[belong[edsave[i][1]]]++; } int cnt=0; for(int i=1;i<=btn;i++) if(degree[i]==0){ cnt++; ans+=label[i]; } printf("%d %d\n",cnt,ans); } return 0;}

  

转载于:https://www.cnblogs.com/jie-dcai/p/4135444.html

你可能感兴趣的文章
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>