| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 12015 | Accepted: 4783 |
Description
Input
Output
Sample Input
5 2 4 3 0 4 5 0 0 0 1 0
Sample Output
1 2
Source
问题一:至少要向几个学校传递 原始 信息,才能保证所有学校都能收到信息。
问题二:至少要添加多少组关系(每组关系类型如右:a 可以 向 b 传递信息),才能保证 给任意一个学校原始信息后,其他所有学校都能收到信息。
#include<stdio.h>
#include<string.h>
#include<vector>
#include<iostream>
using namespace std;
#define min(a,b) (a>b?b:a)
#define max(a,b) (a>b?a:b)
/*struct s
{
int u,v,next;
}edge[110*110*2*100];*/
int low[110],dfn[110],ins[110],belong[110],head[110],stack[110],in[110],out[110];
int cnt,taj,top,time;
vector<int>vt[110];
void init()
{
memset(dfn,-1,sizeof(dfn));
memset(ins,0,sizeof(ins));
memset(belong,-1,sizeof(dfn));
memset(low,-1,sizeof(low));
memset(stack,0,sizeof(stack));
memset(head,-1,sizeof(head));
memset(out,0,sizeof(out));
memset(in,0,sizeof(in));
cnt=top=time=taj=0;
}
/*void add(int u,int v)
{
edge[cnt].u=u;
edge[cnt].v=v;
edge[cnt].next=head[u];
head[u]=cnt++;
}*/
void tarjan(int u)
{
dfn[u]=low[u]=time++;
ins[u]=1;
stack[top++]=u;
for(int i=0;i<vt[u].size();i++)
{
int v=vt[u][i];
if(dfn[v]==-1)
{
tarjan(v);
low[u]=min(low[v],low[u]);
}
else
if(ins[v])
low[u]=min(dfn[v],low[u]);
}
if(low[u]==dfn[u])
{
int now;
taj++;
do
{
now=stack[--top];
ins[now]=0;
belong[now]=taj;
}while(now!=u);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
init();
for(i=0;i<=n;i++)
vt[i].clear();
for(i=1;i<=n;i++)
{
int v;
while(scanf("%d",&v)!=EOF,v)
{
//add(i,v);
vt[i].push_back(v);
}
}
for(i=1;i<=n;i++)
{
if(dfn[i]==-1)
tarjan(i);
}
if(taj==1)
{
printf("1\n0\n");
continue;
}
for(i=1;i<=n;i++)
{
//int u=edge[i].u;
//int v=edge[i].v;
// printf("%d %d\n",u,belong[u]);
// printf("%d %d\n",v,belong[v]);
int u=i;
for(int j=0;j<vt[u].size();j++)
{
int v=vt[u][j];
if(belong[u]!=belong[v])
{
in[belong[v]]++;
out[belong[u]]++;
}
}
}
int ans1=0,ans2=0;
for(i=1;i<=taj;i++)
{
if(in[i]==0)
ans1++;
if(out[i]==0)
ans2++;
}
printf("%d\n",ans1);
printf("%d\n",max(ans1,ans2));
}
}POJ 题目1236 Network of Schools(强联通)
原文:http://blog.csdn.net/yu_ch_sh/article/details/44257425