CF 427C Checkposts Tarjan
来源:互联网 发布:淘宝双12页面怎么设置 编辑:程序博客网 时间:2024/05/16 17:05
求每个强连通分量里的最小支出和个数。
#include<iostream>#include<cstdio>#include<vector>using namespace std;const int N=100005,MOD=1e9+7;int cost[N];int Stack[N],top=0;bool inStack[N];int DFN[N],Low[N],Index=0;vector<int> Edge[N];long long sum=0,ans=1;void Tarjan(int u){int v;DFN[u]=Low[u]=++Index;inStack[u]=true;Stack[++top]=u;for(int e=0;e<Edge[u].size();e++){v=Edge[u][e];if(!DFN[v]){Tarjan(v);Low[u]=min(Low[u],Low[v]);}else if(inStack[v])Low[u]=min(Low[u],DFN[v]);}if(DFN[u]==Low[u]){int x=0,y=MOD;do{v=Stack[top--];inStack[v]=false;if(cost[v]<y) x=1,y=cost[v];//求强连通里最小支出else if(cost[v]==y) x++;//以及个数}while(u!=v);sum+=y;ans=(ans*x)%MOD;}}int main(){int n,m,x,y;cin>>n;for(int i=1;i<=n;i++)cin>>cost[i];cin>>m;for(int i=0;i<m;i++){cin>>x>>y;Edge[x].push_back(y);}for(int i=1;i<=n;i++){if(!DFN[i])Tarjan(i);}cout<<sum<<" "<<ans<<endl;return 0;}
0 0
- CF 427C Checkposts Tarjan
- CF:Problem 427C - Checkposts强连通Tarjan算法
- CF:Problem 427C - Checkposts强连通 Tarjan算法
- Codeforces#427C Checkposts(强联通Tarjan)
- CF 427C. Checkposts Strongly connected components
- Codeforces 427C Checkposts (强连通分量 tarjan模板)
- CodeForces 427C Checkposts (Tarjan模板题)
- Codeforces 427C Checkposts【Tarjan强连通+缩点染色】
- Codeforces 427C Checkposts 强连通分量(tarjan)
- Codeforces#427C Checkposts 【Tarjan求scc 】+【同余定理】
- cf 244c Checkposts 强连通分量
- codeforces 427C Checkposts
- codeforces 427C Checkposts
- Codeforces 427 C. Checkposts
- Codeforces 427C - Checkposts 极大连通分量Tarjan算法模板题(STL实现)
- Codeforces Round #244 (Div. 2) 427C Checkposts (强连通分量 tarjan模板)
- CF427C Checkposts(tarjan求强连通)
- codeforces #427C Checkposts(强连通缩点)
- 单调队列经典题目 FOJ 1894
- 原创的重要性
- python 第8章 异常处理
- java线程系列---Runnable和Thread的区别
- 你必须知道的 34 个简单实用的 Ubuntu 快捷键
- CF 427C Checkposts Tarjan
- OpenCV操作像素
- 加油之歌vos
- 这是一首简单dd
- 【Ubuntu】[待机时间]:修改Ubuntu待机时间
- Ubuntu操作基本快捷键
- Treasure the new start, freshmen! 2061
- Python随机播放电脑里的音乐
- linux 认证方式