La 6450 social advertising (DFS pruning)

Source: Internet
Author: User

6450 social advertising
You have decided to start up a new social networking company. Other existing popular social networks
Already have billions of users, so the only way to compete with them is to include novel features no
Other networks have.
Your company has decided to market to advertisers a cheaper way to charge for advertisements (ADS ).
The Advertiser chooses which users '" wall "the ads wowould appear on, and only those ads are charged.
When an ad is posted on a user's wall, all of his/her friends (and of course the user himself/herself)
Will see the ad. In this way, an advertiser only has to pay for a small number of ads to reach users
More users.
You wowould like to post ads to a participant group of users with the minimum cost. You already have
The "Friends List" of each of these users, and you want to determine the smallest number of ads you have
To post in order to reach every user in this group. In this social network, if A is a friend of B, then B
Is also a friend of A for any two users a and B.
Input
The input consists of multiple test cases. The first line of input is a single integer, not more
10, indicating the number of test cases to follow. Each case starts with a line containing an integer n
(1 ≤ n ≤ 20) indicating the number of users in the group. For the next n lines, the ith line contains
Friend list of user I (users are labeled 1,..., n). Each line starts with an integer d (0 ≤ d <n) followed
By D labels of the friends. No user is a friend of himself/herself.
Output
For each case, display on a line the minimum number of ADS needed to be placed in order for them
Reach the entire group of users.
Sample Input
2
5
4 2 3 4 5
4 1 3 4 5
4 1 2 4 5
4 1 2 3 5
4 1 2 3 4
5
2 4 5
2 3 5
1 2
2 1 5
3 1 2 4
Sample output
1
2

A person advertises advertisements for publicity and has many relationships with friends. A person can make n of his friends see them on his own. Find the least advertisers.

 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <vector> 5 using namespace std; 6  7 const int maxn=25; 8 int n,flag; 9 vector<int> f[maxn];10 int vis[maxn];11 int cnt[maxn];12 13 bool is_ok(int s)14 {15     memset(vis,0,sizeof(vis));16     int i,j,sum=0;17     for(i=0;i<s;i++)18     {19         if(!vis[cnt[i]])20         { 21             vis[cnt[i]]=1;sum++;22         }23         for(j=0;j<f[cnt[i]].size();j++)24         {25             if(!vis[f[cnt[i]][j]])26             {27                 vis[f[cnt[i]][j]]=1;sum++;28             }29         }30     }31     if(sum==n) return 1;32     return 0;33 }34 35 void dfs(int now,int s,int dep)36 {37     if(now>n+1) return ;38     if(s==dep)39     {40         if(is_ok(s)) flag=1;41         return ;42     }43     cnt[s]=now;44     dfs(now+1,s+1,dep);45     dfs(now+1,s,dep);46 }47 int main()48 {49     int t,i,k,p;50     scanf("%d",&t);51     while(t--)52     {53         scanf("%d",&n);54         for(i=1;i<=n;i++) f[i].clear();55         for(i=1;i<=n;i++)56         {57             scanf("%d",&k);58             while(k--)59             {60                 scanf("%d",&p);61                 f[i].push_back(p);f[p].push_back(i);62             }63         }64         flag=0;65         for(i=1;i<=n;i++)66         {67             dfs(1,0,i);68             if(flag) break;69         }70         printf("%d\n",i);71     }72     return 0;73 }

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.