浙江新地标建设集团网站,店面设计原则,钓鱼网站制作步骤,网站建设服务商PTA | 程序设计类实验辅助教学平台
题解#xff1a;
bfs可以求解从根节点到叶子节点的指定路径#xff0c;这里的vis[]不是为了防止访问到父节点#xff0c;更多的是为了缩小路径长度#xff0c;mpp和mp的映射也很巧妙#xff0c;开始我用的还是mappairstring,s…PTA | 程序设计类实验辅助教学平台
题解
bfs可以求解从根节点到叶子节点的指定路径这里的vis[]不是为了防止访问到父节点更多的是为了缩小路径长度mpp和mp的映射也很巧妙开始我用的还是mappairstring,string,int,差点没麻烦死 #includebits/stdc.h
using namespace std;
const int N1e410;
bool vis[N];//虽然是有向图但是必要
int n,idx;
vectorintp[N];
mapstring,intmp;
mapint,stringmpp;
int pre[N];//记录路径
vectorintbfs(int s,int e)
{pre[e]-1;queueintq;q.push(s);memset(vis,0,sizeof vis);vis[s]1;while(q.size()){int xq.front();if(xe)break;q.pop();for(int i0;ip[x].size();i){if(vis[p[x][i]])continue;vis[p[x][i]]1;q.push(p[x][i]);pre[p[x][i]]x;}}vectorintt;if(pre[e]-1)return t;while(e!s){t.push_back(e);epre[e];}t.push_back(s);reverse(t.begin(),t.end());return t;
}
int main()
{cinn;for(int i0;in;i){string s1,s2,id1,id2;cins1id1s2id2;if(mp.count(s1 0)0){mpp[idx]s1 0;mp[s1 0]idx;mpp[idx]s1 1;mp[s1 1]idx;}if(mp.count(s2 0)0){mpp[idx]s2 0;mp[s2 0]idx;mpp[idx]s2 1;mp[s2 1]idx;}s1 id1;s2 id2;p[mp[s1]].push_back(mp[s2]);}vectorintans(2020)//定义了一个容量为2020的vector且里面每个值为0;for(int i0;iidx;i2){vectorints1bfs(i,i1);vectorints2bfs(i1,i);if(ans.size()s1.size()s1.size()0){anss1;}if(ans.size()s2.size()s2.size()0){anss2;}}for(int i0;ians.size()-1;i)coutmpp[ans[i]] mpp[ans[i1]] ;cout ;coutmpp[ans[0]] mpp[ans[ans.size()-1]];return 0;
}