标签:des style blog http color os io strong
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 14469 | Accepted: 3801 |
Description
Input
Output
Sample Input
1 3 3 1 2 2 3 3 1
Sample Output
Yes
Source
题目大意:
解题思路:T组测试数据,n个点,m有向条边,然后问你这个图是否满足任意两个点u到v或者v到u
解题代码:参照我的博客这篇文章,就知道解法了:http://blog.csdn.net/a1061747415/article/details/38380665
#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=1100;
const int maxm=51000;
struct edge{
int u,v,next;
edge(int u0=0,int v0=0){
u=u0;v=v0;
}
}e[maxm];
int n,m,head[maxn],dfn[maxn],low[maxn],mark[maxn],w[maxn],color[maxn],dp[maxn],cnt,nc,index;
vector <int> vec;
vector <vector<int> > dfsmap;
void addedge(int u,int v){
e[cnt]=edge(u,v);e[cnt].next=head[u];head[u]=cnt++;
}
void input(){
cnt=nc=index=0;
scanf("%d%d",&n,&m);
vec.clear();
for(int i=0;i<=n;i++){
w[i]=dfn[i]=0;
mark[i]=false;
color[i]=dp[i]=head[i]=-1;
}
int u,v;
while(m-- >0){
scanf("%d%d",&u,&v);
addedge(u,v);
}
}
void tarjan(int s){
dfn[s]=low[s]=++index;
mark[s]=true;
vec.push_back(s);
for(int i=head[s];i!=-1;i=e[i].next){
int d=e[i].v;
if(!dfn[d]){
tarjan(d);
low[s]=min(low[d],low[s]);
}else if(mark[d]){
low[s]=min(low[s],dfn[d]);
}
}
if(dfn[s]==low[s]){
nc++;
int d;
do{
d=vec.back();
vec.pop_back();
color[d]=nc;
mark[d]=false;
w[nc]++;
}while(d!=s);
}
}
int DP(int s){
if(dp[s]!=-1) return dp[s];
int ans=w[s];
for(int i=0;i<dfsmap[s].size();i++){
int d=dfsmap[s][i];
if(DP(d)+w[s]>ans) ans=DP(d)+w[s];
}
return dp[s]=ans;
}
void solve(){
for(int i=1;i<=n;i++){
if(!dfn[i]) tarjan(i);
}
dfsmap.clear();
dfsmap.resize(nc+1);
for(int i=0;i<cnt;i++){
int x=color[e[i].u],y=color[e[i].v];
if(x!=y){
dfsmap[x].push_back(y);
//cout<<x<<"->"<<y<<endl;
}
}
int ans=0;
for(int i=1;i<=nc;i++){
if(DP(i)>ans) ans=DP(i);
//cout<<i<<" "<<ans<<endl;
}
if(ans>=n) printf("Yes\n");
else printf("No\n");
}
int main(){
int t;
scanf("%d",&t);
while(t-- >0){
input();
solve();
}
return 0;
}
POJ 2762 Going from u to v or from v to u? (图论-tarjan),布布扣,bubuko.com
POJ 2762 Going from u to v or from v to u? (图论-tarjan)
标签:des style blog http color os io strong
原文地址:http://blog.csdn.net/a1061747415/article/details/38583047