শনিবার, ৪ ফেব্রুয়ারী, ২০১৭

UVA 459 - Graph Connectivity

#include <stdio.h>
#include <string.h>
#include<bits/stdc++.h>
using namespace std;
vector<long>vec[100];
long vis[100]={0},i,j;
long bfs(long source)
{
    long u,v;
    queue<long>que;
    vis[source]=1;
    que.push(source);
    while(!que.empty())
    {
        long u=que.front();
        for(i=0;i<vec[u].size();i++)
        {
            v=vec[u][i];
            if(vis[v]==0)
            {
                que.push(v);
                vis[v]=1;
            }
        }
        que.pop();
    }
}
main()
{
    long ts,cs=1;
    cin>>ts;
    while(ts--)
    {
        char ch;
        string s;
        long k,k1,k2,i,cnt=0,k3=0,ar[100]={0},vi[100]={0},i1,cnt1=0;
        memset(vis,0,sizeof(vis));
        cin>>ch;
        k=ch-64;
        if(cs!=1)
        {
            cout<<endl;
        }
        cs++;
        getchar();
        while(getline(cin,s))
        {
            if(s[0]=='\0')
                break;
            k1=s[0]-64;
            k2=s[1]-64;
            vec[k1].push_back(k2);
            vec[k2].push_back(k1);
            if(vi[k1]==0)
            {
                cnt1++;
                ar[k3++]=k1;
                vi[k1]=1;
            }
            if(vi[k2]==0)
            {
                ar[k3++]=k2;
                cnt1++;
                vi[k2]=1;
            }
        }
        sort(ar,ar+k3);
        for(i=0;i<k3;i++)
        {
            i1=ar[i];
            if(vis[i1]==0)
            {
                cnt++;
                vis[i1]=1;
                bfs(i1);
            }
        }
        cnt+=(k-cnt1);
        cout<<cnt<<endl;
        for(i=0;i<=30;i++)
        {
            vec[i].clear();
        }
    }
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...