1 solutions

  • 0
    @ 2025-8-14 11:37:21
    #include<bits/stdc++.h>
    using namespace std;
    const int N=500010,M=50010;
    int h[N],e[M],wt[M],ne[M],idx,n,cnt[N];
    bool st[N];
    double dist[N];
    int change(string s)
    {
    //	cout<<s<<"\n";
    	return (int(s[0]-'a')*26)+(int(s[1]-'a'))+1;
    }
    void add(int a,int b,int c)
    {
    //	cout<<a<<" "<<b<<" "<<c;
    	e[idx]=b,ne[idx]=h[a],wt[idx]=c,h[a]=idx++;
    	return;
    }
    bool check(double mid)
    {
    	queue<int>q;
    //	memset(dist,0,sizeof(dist));
    	memset(cnt,0,sizeof(cnt));
    	memset(st,false,sizeof(st));
    	for(int i=1;i<=676;i++)
    	{
    		q.push(i);
    		st[i]=true;
    	}
    	int cou=0;
    	while(q.size())
    	{
    		int t=q.front();
    		q.pop();
    		st[t]=false;
    		for(int i=h[t];i!=-1;i=ne[i])
    		{
    			int j=e[i];
    			if(dist[j]<dist[t]-mid+wt[i]*1.0)
    			{
    				dist[j]=dist[t]-mid+wt[i]*1.0;
    				cnt[j]=cnt[t]+1;
    				if(cnt[j]>=700||++cou>10000)
    				{
    					return true;
    				}
    				if(!st[j])
    				{
    					q.push(j);
    					st[j]=true;
    				}
    			}
    		}
    	}
    	return false;
    }
    int main()
    {
    	while(cin>>n)
    	{
    		if(n==0)
    		{
    			break;
    		}
    		memset(h,-1,sizeof(h));
    		idx=0; 
    		for(int i=1;i<=n;i++)
    		{
    			string s;
    			cin>>s;
    			int c=s.size();
    //			cout<<s<<"\n";
    			string s1,s2;
    			s1=s.substr(0,2),s2=s.substr(c-2,c);
    //			cout<<s1<<" "<<s2<<"\n";
    			add(change(s1),change(s2),c);
    		}
    		if(!check(0))
    		{
    			cout<<"No solution\n";
    		}
    		else
    		{
    			double l=0.0,r=100000.0;
    			while(r-l>1e-4)
    			{
    				double mid=(l+r)/2.0;
    				if(check(mid))
    				{
    					l=mid;
    				}
    				else
    				{
    					r=mid;
    				}
    			}
    			cout<<fixed<<setprecision(2)<<r<<"\n";
    		}
    	}
    	return 0;
    }
    
    
    • 1

    Information

    ID
    289
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    7
    Accepted
    2
    Uploaded By