卡码网 110 字符串迁移
![]()
#include <iostream> #include <vector> #include <string> #include <unordered_set> #include <unordered_map> #include <queue> using namespace std; int main() { string beginStr, endStr, str; int n; cin >> n; unordered_set<string> strSet; cin >> beginStr >> endStr; for (int i = 0; i < n; i++) { cin >> str; strSet.insert(str); } unordered_map<string, int> visitMap; queue<string> que; que.push(beginStr); visitMap.insert(pair<string, int>(beginStr, 1)); while(!que.empty()) { string word = que.front(); que.pop(); int path = visitMap[word]; for (int i = 0; i < word.size(); i++) { string newWord = word; for (int j = 0 ; j < 26; j++) { newWord[i] = j + 'a'; if (newWord == endStr) { cout << path + 1 << endl; return 0; } if (strSet.find(newWord) != strSet.end() && visitMap.find(newWord) == visitMap.end()) { visitMap.insert(pair<string, int>(newWord, path + 1)); que.push(newWord); } } } } cout << 0 << endl; }
卡码网 105 有向图的完全联通
![]()
#include<iostream> #include<list> #include<vector> using namespace std; void dfs(vector<list<int>>& graph,vector<int>& visit,int index){ if(visit[index] == 1) return; visit[index] = 1; list<int> nodes = graph[index]; for(int nextnode:nodes){ dfs(graph,visit,nextnode); } return; } int main(){ int n,m,x,y; cin >> n >> m; vector<list<int>> graph(n+1); while(m--){ cin >> x >> y; graph[x].push_back(y); } vector<int> visit(n+1,0); dfs(graph,visit,1); for(int i = 1;i < n+1;i++){ if(visit[i] == 0) { cout << -1; return 0; } } cout << 1; return 0; }
卡码网 106 海岸线计算
![]()
#include<iostream> #include<vector> using namespace std; int inorder[4][2] = {0,1, 1,0, 0,-1, -1,0}; int main(){ int n,m; cin >> n >> m; vector<vector<int>> graph(n,vector<int>(m,0)); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ cin >> graph[i][j]; } } int len = 0; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(graph[i][j] == 0) continue; for(int k = 0;k < 4;k++){ int next_x = i + inorder[k][0]; int next_y = j + inorder[k][1]; if(next_x < graph.size() && next_x >= 0 && next_y < graph[0].size() && next_y >= 0){ if(graph[next_x][next_y] == 0) len++; }else{ len++; } } } } cout << len; return 0; }