Cod sursa(job #1737140)

Utilizator LucianTLucian Trepteanu LucianT Data 3 august 2016 14:06:30
Problema Componente biconexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
//95 pe .campion
#include <bits/stdc++.h>
#define maxN 16006
#define INF 0x3f3f3f3f
using namespace std;
string text[3];
int n,i,j,s[3],dist[maxN],best[maxN],sol;
bool viz[maxN];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >heap;
int main()
{
    ifstream f("base3.in");
    ofstream g("base3.out");
    for(i=0;i<3;i++)
        f>>text[i],s[i]=text[i].size();
    for(i=1;i<maxN;i++)
        dist[i]=INF;
    heap.push(make_pair(0,0));
    while(!heap.empty())
    {
        int nod=heap.top().second;
        heap.pop();
        if(viz[nod])
            continue;
        viz[nod]=true;
        for(i=0;i<3;i++)
        {
            int cost=dist[nod]+s[i];
            int newn=abs(nod-s[i]);
            if(dist[newn]>cost)
                dist[newn]=cost,
                heap.push(make_pair(cost,newn));
        }
    }
    sol=INF;
    for(i=0;i<3;i++)
        for(j=0;j<s[i];j++)
            if(text[i][j]=='1')
            {
                int val=abs((s[i]-2*j-1));
                if(sol>dist[val]+s[i])
                    sol=dist[val]+s[i];
            }
    if(sol==INF)
        g<<'0';
    else g<<sol;
    return 0;
}