Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <algorithm>
- using namespace std;
- const int INF = 2e9;
- struct edge{
- int a, b, cap, flow;
- edge(){}
- };
- vector <vector <int> > g;
- vector <int> dist, ptr;
- vector <edge> e;
- ostream &operator << (ostream &out, vector <vector <int> > v){
- for(int i = 0; i < g.size(); i++){
- out<<i<<": ";
- for(int j = 0; j < g[i].size(); j++){
- out<<g[i][j]<<" ";
- }
- out<<"\n";
- }
- return out;
- }
- int main(){
- int n;
- string name;
- cin>>n>>name;
- g.resize(n + (int)name.size() + 2);
- for(int k = 0; k < n; k++){
- string s;
- cin>>s;
- for(int i = 0; i < s.size(); i++){
- for(int j = 0; j < name.size(); j++){
- if(s[i] == name[j] && find(g[k + 1].begin(), g[k + 1].end(), n + j + 1) == g[k + 1].end()){
- g[k + 1].push_back(n + j + 1);
- break;
- }
- }
- }
- }
- for(int i = 0; i < n; i++){
- g[0].push_back(i + 1);
- }
- for(int i = 0; i < name.size(); i++){
- g[1 + n + i].push_back(g.size() - 1);
- }
- cout<<g;
- n = g.size();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment