• World Finals 1996 Uva 247 (Floyd求闭包)


      思路:用Floyd求传递闭包。

      附:逗号后的空格没看到,WA了好多次……。还有就是强连通分量也可以做,但是对这个题来说太麻烦,而且不方便输出,。

      代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<map>
    using namespace std;
    int n,m;
    map<string,int> ma;
    map<int,string> mb;
    int maps[50][50],vis[50];
    void dfs(int u)
    {
        vis[u] = 1;
        for(int i = 1;i <= n;i++)
        {
            if(!vis[i] && maps[u][i] && maps[i][u])
            {
                cout<<", "<<mb[i];
                dfs(i);
            }
        }
        return ;
    }
    int main()
    {
        string a,b;
        int tot,u,v,ca = 0 ;
        while(~scanf("%d%d",&n,&m))
        {
            if(n+m == 0) break;
    
            ma.clear();
            mb.clear();
            memset(maps,0,sizeof(maps));
            tot = 1;
            for(int i = 1;i <= m;i++)
            {
                cin>>a>>b;
                if(!ma[a]) ma[a] = tot++;
                if(!ma[b]) ma[b] = tot++;
                u = ma[a]; v = ma[b];
                mb[u] = a; mb[v] = b;
                maps[u][v] = 1;
            }
            for(int k = 1;k <= n;k++)
            {
                for(int i = 1;i <= n;i++)
                {
                    for(int j = 1;j <= n;j++)
                    {
                        maps[i][j] = maps[i][j] || (maps[i][k]&&maps[k][j]);
                    }
                }
            }
            memset(vis,0,sizeof(vis));
            if(!ca) puts("");
            printf("Calling circles for data set %d:
    ",++ca);
            for(int i = 1;i <= n;i++)
            {
                if(!vis[i])
                {
                    cout<<mb[i];
                    dfs(i);
                    cout<<endl;
                }
            }
        }
    }
  • 相关阅读:
    webkit 技术内幕 笔记 二
    webkit 技术内幕 笔记 一
    javascript 权威指南1
    正则
    react-virtualized
    移动端字体
    vue 学习3
    vue 学习2
    vue 学习1
    移动端display:flex
  • 原文地址:https://www.cnblogs.com/jifahu/p/5572675.html
Copyright © 2020-2023  润新知