10199 - Tourist Guide

来源:互联网 发布:mysql复合索引 编辑:程序博客网 时间:2024/06/06 09:37

/*

有关割点的问题

*/

#include<cstdio>

#include<cstring>
#include<cstdlib>
#include<vector>


using namespace std;
char a[110][32];
int dfs_clock,pre[210],iscut[210],low[210];
vector<int>g[210];
int cmp(const void *a,const void *b)
{
    return strcmp((char *)a,(char *)b);
}
int dfs(int u,int fa)
{
    int lowu = pre[u] = ++dfs_clock;
    int child = 0;
    for(int i = 0; i<g[u].size(); i++)
    {
        int v = g[u][i];
        if(!pre[v])
        {
            child++;
            int lowv = dfs(v,u);
            lowu = min(lowu,lowv);
            if(lowv >= pre[u])
                iscut[u] = 1;
        }
        else if(pre[v]<pre[u]&&v!=fa)
            lowu = min(lowu,pre[v]);
    }
    if(fa<0&&child==1) iscut[u] = 0;
    low[u] = lowu;
    return lowu;
}
int main()
{
    int n,m,count=0;
    while(scanf("%d",&n)==1)
    {
        if(!n) break;
        memset(low,0,sizeof(low));
        memset(iscut,0,sizeof(iscut));
        memset(pre,0,sizeof(pre));
        for(int i = 0; i < 210; i++)
            g[i].clear();
        for(int i = 0; i < n; i++)
            scanf("%s",a[i]);
        qsort(a,n,sizeof(a[0]),cmp);
        scanf("%d",&m);
        char t1[33],t2[33];
        int u,v;
        for(int i = 0; i < m; i++)
        {
            scanf("%s %s",&t1,&t2);
            for(int j = 0; j < n; j++)
            {
                if(!strcmp(t1,a[j]))
                    u = j;
                if(!strcmp(t2,a[j]))
                    v = j;
            }
            g[u].push_back(v);
            g[v].push_back(u);
        }
        for(int i = 0; i < n; i++)
        {
            dfs_clock=0;
            if(!pre[i])
                dfs(i,-1);
        }
        int ans = 0;
        for(int i = 0; i < n; i++)
            ans+=iscut[i];
        if(count>0)
            puts("");
        printf("City map #%d: %d camera(s) found\n",++count,ans);
        for(int i = 0; i < n; i++)
            if(iscut[i])
                puts(a[i]);
    }
    return 0;
}

原创粉丝点击