usaco Canada Tour

来源:互联网 发布:软件开发技术培训 编辑:程序博客网 时间:2024/05/16 02:56

没想到用dp,写完才发现这就是floyd求最大环。。。。。

/*ID:jinbo wuTASK:tourLANG:C++*/#include<bits/stdc++.h>using namespace std;bool g[110][110];int f[110][110];char s1[20],s2[20];map<string,int> ma;int main(){freopen("tour.in","r",stdin);freopen("tour.out","w",stdout);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>s1;ma[s1]=i; }for(int i=1;i<=m;i++){cin>>s1>>s2;g[ma[s1]][ma[s2]]=1;g[ma[s2]][ma[s1]]=1;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)f[i][j]=-100;f[1][1]=1;for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++)for(int k=1;k<j;k++){if(g[k][j]&&f[i][k]&&f[i][k]+1>f[i][j])f[i][j]=f[j][i]=f[i][k]+1; }int ans=1;for(int i=1;i<n;i++){if(f[i][n]&&g[i][n])ans=max(ans,f[i][n]);}cout<<ans<<endl;}


0 0