Pagini recente »
Istoria paginii runda/3/clasament
|
Monitorul de evaluare
|
Cod sursă (job #563961)
|
Istoria paginii runda/9_1/clasament
|
Cod sursă (job #800061)
Cod sursă (job
#800061)
#include <fstream>
#include <unordered_set>
#include <stack>
#include <string>
using namespace std;
ifstream cin("cristela.in");
ofstream cout("cristela.out");
unordered_set<int> v[40];
unordered_set<int> adj[500005];
stack<int> S1;
int main()
{
ios::sync_with_stdio(false);
int n; string s;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s;
for (int j = 0; j < s.length(); j++)
{
if (!v[s[j] - 'a'].empty())
{
for (auto e : v[s[j] - 'a'])
{
if(i!=e)
{
adj[e].insert(i);
adj[i].insert(e);
}
}
}
v[s[j] - 'a'].insert(i);
}
}
int c = 0;
for (int i = 0; i < n; i++)
{
if (!adj[i].empty())
{
for (const int &e : adj[i])
{
c++;
//cout << e<< " ";
S1.push(e);
}
while(!S1.empty())
{
adj[S1.top()].erase(i);
S1.pop();
}
}
}
cout << c;
}