设为首页 加入收藏

TOP

混合图 (h[u]误写成h[q[u]]……)(二)
2013-01-01 14:48:57 来源: 作者: 【 】 浏览:1247
Tags:混合   写成

 

  请务必注意哈希表h[u]别多套一个q[u]……

  [cpp]

  #include<cstdio>

  #include<cstring>

  #include<cmath>

  #include<cstdlib>

  #include<iostream>

  #include<functional>

  #include<algorithm>

  using namespace std;

  #define MAXN (100000+10)

  #define MAXM (100000+10)

  int n,m1,m2,indegree[MAXN]={0},head[MAXN],next[MAXM]={0},edge[MAXM]={0},tot=0;

  void addedge(int u,int v)

  {

  edge[++tot]=v;

  next[tot]=head[u];

  head[u]=tot;

  }

  int q[MAXN*2];

  bool b[MAXN]={0};

  void topsort()

  {

  int head_=1,tail=0;

  for (int i=1;i<=n;i++)

  if (indegree[i]==0)

  {

  q[++tail]=i;b[i]=1;

  }

  while (head_<=tail)

  {

  int now=q[head_];

  int p=head[now];

  while (p)

  {

  int v=edge[p];

  indegree[v]--;

  if (indegree[v]==0)

  {

  q[++tail]=v;b[v]=1;

  }

  p=next[p];

  }

  head_++;

  }

  }

  int h[MAXN];

  int main()

  {

  freopen("dizzy.in","r",stdin);

  freopen("dizzy.out","w",stdout);

  scanf("%d%d%d",&n,&m1,&m2);

  memset(head,0,sizeof(head));

  for (int i=1;i<=m1;i++)

  {

  int u,v;

  scanf("%d%d",&u,&v);

  addedge(u,v);

  indegree[v]++;

  }

  topsort();

  for (int i=1;i<=n;i++)

        

首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++开发那些dll和lib 下一篇ParticleSystem 粒子系统

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: