hdu 1269
来源:互联网 发布:人工智能就业前景 编辑:程序博客网 时间:2024/06/13 10:25
强连通分量 基础题 比较简单 第一次使用链式结构 纪念一下
#include<iostream>
using namespace std;
struct G
{
int dest;
G *next;
};
int n,m;
G *ga[10001];
G *gt[10001];
int path[10001];
int vis[10001];
void addedge(G *g[],int i,int j)
{
G *l=new G;
l->dest=j;
l->next=g[i];//注意g初始化为0
g[i]=l;
}
void dfsa(int u)
{
G *l=ga[u];
if(!vis[u])
{
vis[u]=1;
for(l;l!=NULL;l=l->next)
dfsa(l->dest);
path[0]++;
path[path[0]]=u;
}
}
void dfst(int u)
{
G *l=gt[u];
if(!vis[u])
{
vis[u]=1;
for(l;l!=NULL;l=l->next)
dfst(l->dest);
}
}
void k()
{
int i;
path[0]=0;
memset(vis,0,sizeof(vis));
//搜索原图
for(i=1;i<=n;i++)
{
if(!vis[i])
dfsa(i);
}
memset(vis,0,sizeof(vis));
int sum=0;
for(i=n;i>=1;i--)
{
if(!vis[path[i]])
{
sum++;
dfst(path[i]);
}
}
if(sum>1)
printf("No\n");
else
printf("Yes\n");
}
int main()
{
int a,b;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0)
break;
for(int i=1;i<=n;i++)
ga[i]=gt[i]=NULL;
while(m--)
{
scanf("%d%d",&a,&b);
addedge(ga,a,b);
addedge(gt,b,a);
}
k();
}
return 0;
}
- hdu 1269
- hdu 1269
- hdu 1269
- hdu-1269
- hdu 1269
- HDU 1269
- HDU 1269
- hdu-1269
- HDU---1269
- hdu 1269
- HDU 1269 STL 自娱自乐
- hdu 1269 强连通
- hdu 1269 tarjan
- hdu 1269 迷宫城堡
- HDU 1269 迷宫城堡
- HDU 1269 - 迷宫城堡
- HDU 1269 强联通
- HDU 1269 迷宫城堡
- 一个登录的小异常 哈哈哈
- 2014蓝桥杯本科B组C/C++第一题【啤酒和饮料】
- Android复习之Menu
- HDU 2457 DNA repair 不含模式串的最少修改次数
- UVa 11300 Spreading the Wealth
- hdu 1269
- ora.orcl.db ora....se.type OFFLINE OFFLINE
- Android EditText自定义按键盘
- 纯JS写的2048游戏,分享之
- PAT - 1006. 换个格式输出整数 (15)
- WCHAR和CHAR的常用处理函数
- poj 1742 Coins
- 你如何评价Android系统?优缺点
- 动态规划