শনিবার, ৪ মার্চ, ২০১৭

UVA 10946 You want what filled?

#include<bits/stdc++.h>
using namespace std;
long i,cnt=0,vis[55][55]={0},x,y,j,k,x1,y2;
long dx[]={-1,0,0,1};
long dy[]={0,-1,1,0};
string s[100];
void dfs(long i1,long j1,char ch1)
{
    cnt++;
    vis[i1][j1]=1;
    long i2;
    for(i2=0; i2<4; i2++)
    {
        long x1=i1+dx[i2];
        long y1=j1+dy[i2];
        if(((x1>=0&&x1<x)&&(y1>=0&&y1<y))&&vis[x1][y1]==0)
        {
            if(s[x1][y1]==ch1)
            {
                vis[x1][y1]=1;
                dfs(x1,y1,ch1);
            }
        }
    }
}
main()
{
    long cs=1;
    while(cin>>x>>y)
    {
        if(x==0&&y==0)
        {
            break;
        }
        vector<char>vec[2505];
        map<long,long>mp;
        long ar[2502]={0},k=0,j,jj;
        mp.clear();
        for(i=0;i<x;i++)
        {
            for(j=0;j<y;j++)
                vis[i][j]=0;
        }
        for(i=0;i<x;i++)
        {
                cin>>s[i];
        }
        for(i=0;i<x;i++)
        {
            for(j=0;j<y;j++)
            {
                if(s[i][j]!='.'&&vis[i][j]==0)
                {
                    char ch=s[i][j];
                    cnt=0;
                    dfs(i,j,ch);
                    vec[cnt].push_back(ch);
                    if(mp[cnt]==0)
                    {
                        ar[k++]=cnt;
                        mp[cnt]=1;
                    }
                }
            }
        }

        sort(ar,ar+k);
        cout<<"Problem "<<cs++<<":"<<"\n";
        for(j=k-1;j>=0;j--)
        {
            sort(vec[ar[j]].begin(),vec[ar[j]].end());
            long k1=vec[ar[j]].size();
            for(jj=0;jj<k1;jj++)
            {
                cout<<vec[ar[j]][jj]<<" "<<ar[j]<<endl;
            }
            vec[ar[j]].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); ...