#include<bits/stdc++.h>
using namespace std;
string s[21];
int maxx;
struct edge{
int end;
int dis;
};
struct node{
int vis_time=2;
vector<edge> e;
}nd[100];
int contact(string a,string b){
for(int i=0;i<=a.size();i++){
bool flag=true;
for(int j=0;j<=i;j++){
if(a[a.size()-i-1+j]!=b[j]){
flag=false;
break;
}
}
if(flag&&i+1!=b.size()) return b.size()-i-1;
}
return 0;
}
void dfs(int x,int all){
maxx=max(maxx,all);
if(nd[x].vis_time==0){
return ;
}
vector<int>::iterator it=nd[x].e.begin();
for(;it!=nd[x].e.end();it++){
all+=*it.dis;
dfs(*it,all);
all--*it.dis;
}
}
void add(int a,int b,int base){
edge add_edge;
add_edge.end=b;
add_edge.dis=base;
nd[a].e.push_back(add_edge);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) continue;
int base=contact(s[i],s[j]);
if(base){
add(i,j,base);
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) nd[j].vis_time=2;
maxx=0xc0c0c0c0;
dfs(i,0);
cout<<maxx<<"\n";
}
return 0;
}
报错内容:
31行:[Error] conversion from 'std::vector<edge>::iterator {aka __gnu_cxx::__normal_iterator<edge*, std::vector<edge> >}' to non-scalar type 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' requested
32行:[Error] no match for 'operator!=' (operand types are 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' and 'std::vector<edge>::iterator {aka __gnu_cxx::__normal_iterator<edge*, std::vector<edge> >}')